From 025d1529360741c8690c0a89a9cb9f1af7313abe Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 3 Oct 2014 05:25:36 +0200 Subject: [PATCH] * Keep m_luceneReader & -Searcher alive during indexing and don't block mutex while searching. --- src/libtomahawk/TomahawkSettings.cpp | 2 +- .../database/fuzzyindex/FuzzyIndex.cpp | 50 ++++--------------- 2 files changed, 12 insertions(+), 40 deletions(-) diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp index a2205a88a..8f57d2e8b 100644 --- a/src/libtomahawk/TomahawkSettings.cpp +++ b/src/libtomahawk/TomahawkSettings.cpp @@ -1536,7 +1536,7 @@ TomahawkSettings::updateIndex() } tDebug() << Q_FUNC_INFO << "Wiping index."; - Database::instance()->wipeIndex(); +// Database::instance()->wipeIndex(); Tomahawk::DatabaseCommand* cmd = new Tomahawk::DatabaseCommand_UpdateSearchIndex(); Database::instance()->enqueue( QSharedPointer( cmd ) ); } diff --git a/src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp b/src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp index cc7d5b429..25579868a 100644 --- a/src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp +++ b/src/libtomahawk/database/fuzzyindex/FuzzyIndex.cpp @@ -97,17 +97,6 @@ FuzzyIndex::beginIndexing() try { tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Starting indexing:" << m_lucenePath; - if ( m_luceneReader ) - { - tDebug( LOGVERBOSE ) << "Deleting old lucene stuff."; - - m_luceneSearcher->close(); - m_luceneReader->close(); - m_luceneSearcher.reset(); - m_luceneReader.reset(); - } - - tDebug( LOGVERBOSE ) << "Creating new index writer."; m_luceneWriter = newLucene( m_luceneDir, m_analyzer, true, IndexWriter::MaxFieldLengthLIMITED ); } catch( LuceneException& error ) @@ -126,6 +115,9 @@ FuzzyIndex::endIndexing() m_luceneWriter->close(); m_luceneWriter.reset(); + m_luceneReader = IndexReader::open( m_luceneDir ); + m_luceneSearcher = newLucene( m_luceneReader ); + m_mutex.unlock(); emit indexReady(); } @@ -211,23 +203,13 @@ FuzzyIndex::loadLuceneIndex() QMap< int, float > FuzzyIndex::search( const Tomahawk::query_ptr& query ) { - QMutexLocker lock( &m_mutex ); - +// QMutexLocker lock( &m_mutex ); QMap< int, float > resultsmap; + if ( !m_luceneReader || !m_luceneSearcher ) + return resultsmap; + try { - if ( !m_luceneReader ) - { - if ( !IndexReader::indexExists( m_luceneDir ) ) - { - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "index didn't exist."; - return resultsmap; - } - - m_luceneReader = IndexReader::open( m_luceneDir ); - m_luceneSearcher = newLucene( m_luceneReader ); - } - float minScore; Collection fields; // = newCollection(); MultiFieldQueryParserPtr parser = newLucene( LuceneVersion::LUCENE_CURRENT, fields, m_analyzer ); @@ -296,23 +278,13 @@ FuzzyIndex::searchAlbum( const Tomahawk::query_ptr& query ) { Q_ASSERT( query->isFullTextQuery() ); - QMutexLocker lock( &m_mutex ); - +// QMutexLocker lock( &m_mutex ); QMap< int, float > resultsmap; + if ( !m_luceneReader || !m_luceneSearcher ) + return resultsmap; + try { - if ( !m_luceneReader ) - { - if ( !IndexReader::indexExists( m_luceneDir ) ) - { - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "index didn't exist."; - return resultsmap; - } - - m_luceneReader = IndexReader::open( m_luceneDir ); - m_luceneSearcher = newLucene( m_luceneReader ); - } - QueryParserPtr parser = newLucene( LuceneVersion::LUCENE_CURRENT, L"album", m_analyzer ); QString q = Tomahawk::DatabaseImpl::sortname( query->fullTextQuery() );