mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 19:24:08 +00:00
opt: full text index compact
This commit is contained in:
parent
623cc83c39
commit
a8c3207a76
|
@ -68,4 +68,23 @@ std::string basename( std::string const & str )
|
|||
return std::string( str, x + 1 );
|
||||
}
|
||||
|
||||
void removeDirectory( QString const & directory )
|
||||
{
|
||||
QDir dir( directory );
|
||||
Q_FOREACH ( QFileInfo info,
|
||||
dir.entryInfoList( QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files, QDir::DirsFirst ) ) {
|
||||
if ( info.isDir() )
|
||||
removeDirectory( info.absoluteFilePath() );
|
||||
else
|
||||
QFile::remove( info.absoluteFilePath() );
|
||||
}
|
||||
|
||||
dir.rmdir( directory );
|
||||
}
|
||||
|
||||
void removeDirectory( string const & directory )
|
||||
{
|
||||
removeDirectory( QString::fromStdString( directory ) );
|
||||
}
|
||||
|
||||
} // namespace Utils::Fs
|
||||
|
|
|
@ -332,7 +332,9 @@ char separator();
|
|||
|
||||
/// Returns the name part of the given filename.
|
||||
string basename( string const & );
|
||||
void removeDirectory( QString const & directory );
|
||||
|
||||
void removeDirectory( string const & directory );
|
||||
} // namespace Fs
|
||||
|
||||
} // namespace Utils
|
||||
|
|
|
@ -105,7 +105,7 @@ void makeFTSIndex( BtreeIndexing::BtreeDictionary * dict, QAtomicInt & isCancell
|
|||
throw exUserAbort();
|
||||
|
||||
// Open the database for update, creating a new database if necessary.
|
||||
Xapian::WritableDatabase db( dict->ftsIndexName(), Xapian::DB_CREATE_OR_OPEN );
|
||||
Xapian::WritableDatabase db( dict->ftsIndexName() + "_temp", Xapian::DB_CREATE_OR_OPEN );
|
||||
|
||||
Xapian::TermGenerator indexer;
|
||||
// Xapian::Stem stemmer("english");
|
||||
|
@ -206,6 +206,10 @@ void makeFTSIndex( BtreeIndexing::BtreeDictionary * dict, QAtomicInt & isCancell
|
|||
offsets.clear();
|
||||
|
||||
db.commit();
|
||||
|
||||
db.compact( dict->ftsIndexName() );
|
||||
|
||||
Utils::Fs::removeDirectory( dict->ftsIndexName() + "_temp" );
|
||||
}
|
||||
catch ( Xapian::Error & e ) {
|
||||
qWarning() << "create xapian index:" << QString::fromStdString( e.get_description() );
|
||||
|
|
Loading…
Reference in a new issue