1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-07-31 11:20:22 +02:00

* Make FuzzyIndex robuster.

This commit is contained in:
Christian Muehlhaeuser
2012-06-07 13:25:02 +02:00
parent f174afbd56
commit 7dabdc0a68
2 changed files with 39 additions and 12 deletions

View File

@@ -24,7 +24,9 @@
#include <CLucene.h>
#include <CLucene/queryParser/MultiFieldQueryParser.h>
#include "DatabaseCommand_UpdateSearchIndex.h"
#include "DatabaseImpl.h"
#include "Database.h"
#include "utils/TomahawkUtils.h"
#include "utils/Logger.h"
#include "Source.h"
@@ -38,7 +40,7 @@ using namespace lucene::queryParser;
using namespace lucene::search;
FuzzyIndex::FuzzyIndex( QObject* parent, bool wipeIndex )
FuzzyIndex::FuzzyIndex( QObject* parent, bool wipe )
: QObject( parent )
, m_luceneReader( 0 )
, m_luceneSearcher( 0 )
@@ -56,15 +58,11 @@ FuzzyIndex::FuzzyIndex( QObject* parent, bool wipeIndex )
catch ( CLuceneError& error )
{
tDebug() << "Caught CLucene error:" << error.what();
Q_ASSERT( false );
wipe = true;
}
if ( wipeIndex )
{
tLog( LOGVERBOSE ) << "Wiping fuzzy index...";
beginIndexing();
endIndexing();
}
if ( wipe )
wipeIndex();
}
@@ -77,6 +75,27 @@ FuzzyIndex::~FuzzyIndex()
}
bool
FuzzyIndex::wipeIndex()
{
tLog( LOGVERBOSE ) << "Wiping fuzzy index...";
beginIndexing();
endIndexing();
QTimer::singleShot( 0, this, SLOT( updateIndex() ) );
return true; // FIXME
}
void
FuzzyIndex::updateIndex()
{
DatabaseCommand* cmd = new DatabaseCommand_UpdateSearchIndex();
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
}
void
FuzzyIndex::beginIndexing()
{
@@ -170,7 +189,8 @@ FuzzyIndex::appendFields( const QMap< unsigned int, QMap< QString, QString > >&
catch( CLuceneError& error )
{
tDebug() << "Caught CLucene error:" << error.what();
Q_ASSERT( false );
wipeIndex();
}
}
@@ -263,7 +283,8 @@ FuzzyIndex::search( const Tomahawk::query_ptr& query )
catch( CLuceneError& error )
{
tDebug() << "Caught CLucene error:" << error.what();
Q_ASSERT( false );
wipeIndex();
}
return resultsmap;
@@ -317,7 +338,8 @@ FuzzyIndex::searchAlbum( const Tomahawk::query_ptr& query )
catch( CLuceneError& error )
{
tDebug() << "Caught CLucene error:" << error.what();
Q_ASSERT( false );
wipeIndex();
}
return resultsmap;

View File

@@ -55,7 +55,7 @@ class FuzzyIndex : public QObject
Q_OBJECT
public:
explicit FuzzyIndex( QObject* parent, bool wipeIndex = false );
explicit FuzzyIndex( QObject* parent, bool wipe = false );
~FuzzyIndex();
void beginIndexing();
@@ -71,7 +71,12 @@ public slots:
QMap< int, float > search( const Tomahawk::query_ptr& query );
QMap< int, float > searchAlbum( const Tomahawk::query_ptr& query );
private slots:
void updateIndex();
private:
bool wipeIndex();
QMutex m_mutex;
QString m_lucenePath;