Merge pull request #106 from iaom/0122-dev

Optimized file search method;Update debian files about translations.
This commit is contained in:
张佳萍 2021-01-25 19:19:14 +08:00 committed by GitHub
commit b1696716bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 30 deletions

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
ukui-search (0.0.1+0123) v101; urgency=medium
* Bugs Fixed.
-- zhangpengfei <zhangpengfei@kylinos.cn> Sat, 23 Jan 2021 13:53:53 +0800
ukui-search (0.0.1+0120) v101; urgency=medium ukui-search (0.0.1+0120) v101; urgency=medium
* Bugs Fixed. * Bugs Fixed.

View File

@ -1 +1,2 @@
usr/lib/*/*.so.* usr/lib/*/*.so.*
usr/share/ukui-search/translations/libsearch/*.qm

View File

@ -114,7 +114,7 @@ int FileSearcher::keywordSearchfile(size_t uniqueSymbol, QString keyword, QStrin
{ {
try try
{ {
qDebug()<<"--search start--"; qDebug()<<"--keywordSearchfile start--";
Xapian::Database db(INDEX_PATH); Xapian::Database db(INDEX_PATH);
Xapian::Query query = creatQueryForFileSearch(keyword,db); Xapian::Query query = creatQueryForFileSearch(keyword,db);
Xapian::Enquire enquire(db); Xapian::Enquire enquire(db);
@ -131,24 +131,24 @@ int FileSearcher::keywordSearchfile(size_t uniqueSymbol, QString keyword, QStrin
queryFile = query; queryFile = query;
} }
qDebug()<<QString::fromStdString(queryFile.get_description()); qDebug()<<"keywordSearchfile:"<<QString::fromStdString(queryFile.get_description());
enquire.set_query(queryFile); enquire.set_query(queryFile);
Xapian::MSet result = enquire.get_mset(begin, begin+num); Xapian::MSet result = enquire.get_mset(begin, begin+num);
int resultCount = static_cast<int>(result.get_matches_estimated()); int resultCount = static_cast<int>(result.get_matches_estimated());
qDebug()<< "find results count=" <<resultCount; qDebug()<< "keywordSearchfile results count=" <<resultCount;
if(result.size() == 0) if(result.size() == 0)
return 0; return 0;
if(getResult(uniqueSymbol, result, value) == -1) if(getResult(uniqueSymbol, result, value) == -1)
return -1; return -1;
qDebug()<< "--search finish--"; qDebug()<< "--keywordSearchfile finish--";
return resultCount; return resultCount;
} }
catch(const Xapian::Error &e) catch(const Xapian::Error &e)
{ {
qWarning() <<QString::fromStdString(e.get_description()); qWarning() <<QString::fromStdString(e.get_description());
qDebug()<< "--search finish--"; qDebug()<< "--keywordSearchfile finish--";
return -1; return -1;
} }
} }
@ -157,7 +157,7 @@ int FileSearcher::keywordSearchContent(size_t uniqueSymbol, QString keyword, int
{ {
try try
{ {
qDebug()<<"--content search start--"; qDebug()<<"--keywordSearchContent search start--";
Xapian::Database db(CONTENT_INDEX_PATH); Xapian::Database db(CONTENT_INDEX_PATH);
Xapian::Enquire enquire(db); Xapian::Enquire enquire(db);
@ -181,53 +181,56 @@ int FileSearcher::keywordSearchContent(size_t uniqueSymbol, QString keyword, int
// qDebug()<<QString::fromStdString(sKeyWord.at(i).word); // qDebug()<<QString::fromStdString(sKeyWord.at(i).word);
// } // }
// Xapian::Query queryPhrase =Xapian::Query(Xapian::Query::OP_AND, v.begin(), v.end()); // Xapian::Query queryPhrase =Xapian::Query(Xapian::Query::OP_AND, v.begin(), v.end());
qDebug()<<QString::fromStdString(query.get_description()); qDebug()<<"keywordSearchContent:"<<QString::fromStdString(query.get_description());
enquire.set_query(query); enquire.set_query(query);
//dir result
Xapian::MSet result = enquire.get_mset(begin, begin+num); Xapian::MSet result = enquire.get_mset(begin, begin+num);
int resultCount = static_cast<int>(result.get_matches_estimated()); int resultCount = static_cast<int>(result.get_matches_estimated());
if(result.size() == 0) if(result.size() == 0)
return 0; return 0;
qDebug()<< "find results count=" <<resultCount; qDebug()<< "keywordSearchContent results count=" <<resultCount;
if(getContentResult(uniqueSymbol, result, words) == -1) if(getContentResult(uniqueSymbol, result, words) == -1)
return -1; return -1;
qDebug()<< "--content search finish--"; qDebug()<< "--keywordSearchContent search finish--";
return resultCount; return resultCount;
} }
catch(const Xapian::Error &e) catch(const Xapian::Error &e)
{ {
qWarning() <<QString::fromStdString(e.get_description()); qWarning() <<QString::fromStdString(e.get_description());
qDebug()<< "--content search finish--"; qDebug()<< "--keywordSearchContent search finish--";
return -1; return -1;
} }
} }
Xapian::Query FileSearcher::creatQueryForFileSearch(QString keyword, Xapian::Database &db) Xapian::Query FileSearcher::creatQueryForFileSearch(QString keyword, Xapian::Database &db)
{ {
Xapian::QueryParser qp; // Xapian::QueryParser qp;
qp.set_default_op(Xapian::Query::OP_PHRASE); // qp.set_default_op(Xapian::Query::OP_PHRASE);
qp.set_database(db); // qp.set_database(db);
auto userInput = keyword; auto userInput = keyword;
userInput = userInput.replace(".","").simplified(); // userInput = userInput.replace(".","").simplified();
std::string queryStr = keyword.replace(".","").replace(" ","").replace(""," ").simplified().toStdString(); // std::string queryStr = keyword.replace(".","").replace(" ","").replace(""," ").simplified().toStdString();
// std::string s =db.get_spelling_suggestion(queryStr,10); // std::string s =db.get_spelling_suggestion(queryStr,10);
// qDebug()<<"spelling_suggestion!"<<QString::fromStdString(s); // qDebug()<<"spelling_suggestion!"<<QString::fromStdString(s);
qDebug()<<"queryStr!"<<QString::fromStdString(queryStr); // qDebug()<<"queryStr!"<<QString::fromStdString(queryStr);
//Creat a query //Creat a query
Xapian::Query queryPhrase = qp.parse_query(queryStr,Xapian::QueryParser::FLAG_PHRASE); // Xapian::Query queryPhrase = qp.parse_query(queryStr,Xapian::QueryParser::FLAG_PHRASE);
std::vector<Xapian::Query> v; std::vector<Xapian::Query> v;
for(int i=0;i<userInput.size();i++) for(int i=0;i<userInput.size();i++)
{ {
v.push_back(Xapian::Query(QString(userInput.at(i)).toStdString())); v.push_back(Xapian::Query(QString(userInput.at(i)).toStdString()));
qDebug()<<QString::fromStdString(Xapian::Query(QString(userInput.at(i)).toStdString()).get_description()); // qDebug()<<QString::fromStdString(Xapian::Query(QString(userInput.at(i)).toStdString()).get_description());
} }
Xapian::Query queryPhrase =Xapian::Query(Xapian::Query::OP_PHRASE, v.begin(), v.end());
Xapian::Query queryNear =Xapian::Query(Xapian::Query::OP_NEAR, v.begin(), v.end()); Xapian::Query queryNear =Xapian::Query(Xapian::Query::OP_NEAR, v.begin(), v.end());
return Xapian::Query(Xapian::Query::OP_AND,queryNear,queryPhrase); Xapian::Query query = Xapian::Query(Xapian::Query::OP_AND,queryNear,queryPhrase);
// qDebug()<<QString::fromStdString(query.get_description());
return query;
} }
Xapian::Query FileSearcher::creatQueryForContentSearch(QString keyword, Xapian::Database &db) Xapian::Query FileSearcher::creatQueryForContentSearch(QString keyword, Xapian::Database &db)

View File

@ -273,6 +273,7 @@ void IndexGenerator::HandlePathList(QQueue<QString> *messageList)
Document IndexGenerator::GenerateDocument(const QVector<QString> &list) Document IndexGenerator::GenerateDocument(const QVector<QString> &list)
{ {
Document doc;
// qDebug()<<QString::number(quintptr(QThread::currentThreadId())); // qDebug()<<QString::number(quintptr(QThread::currentThreadId()));
//0-filename 1-filepathname 2-file or dir //0-filename 1-filepathname 2-file or dir
QString index_text = list.at(0); QString index_text = list.at(0);
@ -303,7 +304,7 @@ Document IndexGenerator::GenerateDocument(const QVector<QString> &list)
// qDebug()<<"------------------------------------------finish"; // qDebug()<<"------------------------------------------finish";
// } // }
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
Document doc;
doc.setData(sourcePath); doc.setData(sourcePath);
doc.setUniqueTerm(uniqueterm); doc.setUniqueTerm(uniqueterm);
doc.addTerm(upTerm); doc.addTerm(upTerm);

View File

@ -7,7 +7,7 @@ DEFINES += LIBSEARCH_LIBRARY
PKGCONFIG += gio-2.0 glib-2.0 gio-unix-2.0 gsettings-qt PKGCONFIG += gio-2.0 glib-2.0 gio-unix-2.0 gsettings-qt
CONFIG += c++11 link_pkgconfig no_keywords CONFIG += c++11 link_pkgconfig no_keywords lrelease
# The following define makes your compiler emit warnings if you use # The following define makes your compiler emit warnings if you use
@ -67,3 +67,6 @@ unix {
INCLUDEPATH += $$PWD/../libchinese-segmentation INCLUDEPATH += $$PWD/../libchinese-segmentation
DEPENDPATH += $$PWD/../libchinese-segmentation DEPENDPATH += $$PWD/../libchinese-segmentation
#DISTFILES += \
# ../translations/libsearch/libukui-search_zh_CN.ts

View File

@ -93,15 +93,15 @@ MainWindow::MainWindow(QWidget *parent) :
m_search_result_thread = new SearchResult(this); m_search_result_thread = new SearchResult(this);
// m_search_result_thread->start(); // m_search_result_thread->start();
connect(m_search_result_thread, &SearchResult::searchResultFile, this, [ = ](QString path) { connect(m_search_result_thread, &SearchResult::searchResultFile, this, [ = ](QString path) {
qDebug()<<"Append a file into list: "<<path; // qDebug()<<"Append a file into list: "<<path;
m_contentFrame->appendSearchItem(SearchItem::SearchType::Files, path); m_contentFrame->appendSearchItem(SearchItem::SearchType::Files, path);
}); });
connect(m_search_result_thread, &SearchResult::searchResultDir, this, [ = ](QString path) { connect(m_search_result_thread, &SearchResult::searchResultDir, this, [ = ](QString path) {
qDebug()<<"Append a dir into list: "<<path; // qDebug()<<"Append a dir into list: "<<path;
m_contentFrame->appendSearchItem(SearchItem::SearchType::Dirs, path); m_contentFrame->appendSearchItem(SearchItem::SearchType::Dirs, path);
}); });
connect(m_search_result_thread, &SearchResult::searchResultContent, this, [ = ](QPair<QString, QStringList> pair) { connect(m_search_result_thread, &SearchResult::searchResultContent, this, [ = ](QPair<QString, QStringList> pair) {
qDebug()<<"Append a file content into list: "<<pair.first; // qDebug()<<"Append a file content into list: "<<pair.first;
m_contentFrame->appendSearchItem(SearchItem::SearchType::Contents, pair.first, pair.second); m_contentFrame->appendSearchItem(SearchItem::SearchType::Contents, pair.first, pair.second);
}); });

View File

@ -71,8 +71,8 @@ LIBS += -L$$OUT_PWD/../libsearch -lukui-search -L$$OUT_PWD/../libchinese-segment
INCLUDEPATH += $$PWD/../libsearch INCLUDEPATH += $$PWD/../libsearch
DEPENDPATH += $$PWD/../libsearch DEPENDPATH += $$PWD/../libsearch
DISTFILES += \ #DISTFILES += \
../data/ukui-search-menu.desktop \ # ../data/ukui-search-menu.desktop \
translations/bo.ts \ # $$OUT_PWD/.qm/bo.qm \
translations/es.qm \ # $$OUT_PWD/.qm/tr.qm \
translations/zh_CN.qm # $$OUT_PWD/.qm/zh_CN.qm