增加索引目录时采用增量更新检验操作,避免重复索引

This commit is contained in:
iaom 2023-04-04 16:54:52 +08:00
parent 56884b6426
commit af3d9da3fa
1 changed files with 7 additions and 10 deletions

View File

@ -122,10 +122,7 @@ void BatchIndexer::basicIndex()
}
filesNeedIndex = m_cache;
qDebug() <<filesNeedIndex.size() << "files need index.";
} else if(m_mode == WorkMode::Add) {
filesNeedIndex = m_cache;
qDebug() <<filesNeedIndex.size() << "files need index.";
} else if (m_mode == WorkMode::Update) {
} else if (m_mode == WorkMode::Update || m_mode == WorkMode::Add) {
QFileInfo info;
QMap<std::string, std::string> indexTimes = basicDb.getIndexTimes();
qDebug() << indexTimes.size() << "documents recorded";
@ -135,14 +132,15 @@ void BatchIndexer::basicIndex()
filesNeedIndex.append(path);
}
}
if(!indexTimes.isEmpty()) {
if(m_mode == WorkMode::Update && !indexTimes.isEmpty()) {
qDebug() << indexTimes.size() << "documents need remove.";
for(std::string uniqueTerm : indexTimes.keys()) {
basicDb.removeDocument(uniqueTerm);
}
basicDb.commit();
}
qDebug() << filesNeedIndex.size() << "files need update.";
qDebug() << filesNeedIndex.size() << "files need index.";
}
uint allSize = filesNeedIndex.size();
Q_EMIT progress(IndexType::Basic, allSize, 0);
@ -203,8 +201,6 @@ void BatchIndexer::contentIndex()
if(!contentDb.open()) {
return;
}
}
if(m_mode == WorkMode::Rebuild || m_mode == WorkMode::Add) {
for(QString path : m_cache) {
info.setFile(path);
if(true == suffixMap[info.suffix()] && info.isFile()) {
@ -213,7 +209,7 @@ void BatchIndexer::contentIndex()
}
}
}
} else if(m_mode == WorkMode::Update) {
} else if(m_mode == WorkMode::Update || m_mode == WorkMode::Add) {
QMap<std::string, std::string> indexTimes = contentDb.getIndexTimes();
qDebug() << indexTimes.size() << "documents recorded";
for(QString path : m_cache) {
@ -230,7 +226,7 @@ void BatchIndexer::contentIndex()
}
}
}
if(!indexTimes.isEmpty()) {
if(m_mode == WorkMode::Update && !indexTimes.isEmpty()) {
qDebug() << indexTimes.size() << "documents need remove";
for(std::string uniqueTerm : indexTimes.keys()) {
contentDb.removeDocument(uniqueTerm);
@ -239,6 +235,7 @@ void BatchIndexer::contentIndex()
}
}
uint allSize = filesNeedIndex.size();
qDebug() << allSize << "files need content index.";
Q_EMIT progress(IndexType::Contents, allSize, 0);