Merge branch 'main' into 0226-dev
This commit is contained in:
commit
c329840721
|
@ -25,6 +25,13 @@ AppMatch::AppMatch(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
this->getDesktopFilePath();
|
this->getDesktopFilePath();
|
||||||
|
|
||||||
|
m_watchAppDir=new QFileSystemWatcher(this);
|
||||||
|
m_watchAppDir->addPath("/usr/share/applications/");
|
||||||
|
connect(m_watchAppDir,&QFileSystemWatcher::directoryChanged,[this](){
|
||||||
|
this->getDesktopFilePath();
|
||||||
|
});
|
||||||
|
|
||||||
qDBusRegisterMetaType<QMap<QString,QString>>();
|
qDBusRegisterMetaType<QMap<QString,QString>>();
|
||||||
qDBusRegisterMetaType<QList<QMap<QString,QString>>>();
|
qDBusRegisterMetaType<QList<QMap<QString,QString>>>();
|
||||||
m_interFace=new QDBusInterface ("com.kylin.softwarecenter.getsearchresults", "/com/kylin/softwarecenter/getsearchresults",
|
m_interFace=new QDBusInterface ("com.kylin.softwarecenter.getsearchresults", "/com/kylin/softwarecenter/getsearchresults",
|
||||||
|
@ -41,6 +48,10 @@ AppMatch::~AppMatch(){
|
||||||
delete m_interFace;
|
delete m_interFace;
|
||||||
m_interFace=NULL;
|
m_interFace=NULL;
|
||||||
}
|
}
|
||||||
|
if(m_watchAppDir){
|
||||||
|
delete m_watchAppDir;
|
||||||
|
m_watchAppDir=NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//QStringList AppMatch::startMatchApp(QString input){
|
//QStringList AppMatch::startMatchApp(QString input){
|
||||||
|
|
|
@ -54,7 +54,8 @@ private:
|
||||||
QStringList m_filePathList;
|
QStringList m_filePathList;
|
||||||
QStringList m_returnResult;
|
QStringList m_returnResult;
|
||||||
|
|
||||||
QDBusInterface *m_interFace;
|
QDBusInterface *m_interFace=nullptr;
|
||||||
|
QFileSystemWatcher *m_watchAppDir=nullptr;
|
||||||
QMap<QString,QList<QString>> m_softWareCenterMap;
|
QMap<QString,QList<QString>> m_softWareCenterMap;
|
||||||
QMap<QString,QList<QString>> m_installAppMap;
|
QMap<QString,QList<QString>> m_installAppMap;
|
||||||
QMap<QString,QList<QString>> m_filterInstallAppMap;
|
QMap<QString,QList<QString>> m_filterInstallAppMap;
|
||||||
|
|
|
@ -57,10 +57,6 @@ GlobalSettings::GlobalSettings(QObject *parent) : QObject(parent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalSettings::~GlobalSettings()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
const QVariant GlobalSettings::getValue(const QString &key)
|
const QVariant GlobalSettings::getValue(const QString &key)
|
||||||
{
|
{
|
||||||
return m_cache.value(key);
|
return m_cache.value(key);
|
||||||
|
|
|
@ -74,7 +74,7 @@ public Q_SLOTS:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit GlobalSettings(QObject *parent = nullptr);
|
explicit GlobalSettings(QObject *parent = nullptr);
|
||||||
~GlobalSettings();
|
~GlobalSettings() = default;
|
||||||
|
|
||||||
QSettings* m_settings;
|
QSettings* m_settings;
|
||||||
QGSettings* m_gsettings;
|
QGSettings* m_gsettings;
|
||||||
|
|
|
@ -43,7 +43,7 @@ void ConstructDocumentForPath::run()
|
||||||
if (!_doc_list_path)
|
if (!_doc_list_path)
|
||||||
_doc_list_path = new QList<Document>;
|
_doc_list_path = new QList<Document>;
|
||||||
// qDebug()<<_doc_list_path->size();
|
// qDebug()<<_doc_list_path->size();
|
||||||
QString index_text = m_list.at(0);
|
QString index_text = m_list.at(0).toLower();
|
||||||
QString sourcePath = m_list.at(1);
|
QString sourcePath = m_list.at(1);
|
||||||
Document doc;
|
Document doc;
|
||||||
|
|
||||||
|
|
|
@ -226,11 +226,12 @@ int FileSearcher::keywordSearchContent(size_t uniqueSymbol, QString keyword, int
|
||||||
}
|
}
|
||||||
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.toLower();
|
||||||
// userInput = userInput.replace(".","").simplified();
|
// userInput = userInput.replace(".","").simplified();
|
||||||
|
// userInput = QString(QUrl::toPercentEncoding(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);
|
||||||
|
@ -238,7 +239,7 @@ Xapian::Query FileSearcher::creatQueryForFileSearch(QString keyword, Xapian::Dat
|
||||||
|
|
||||||
// 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(userInput.toStdString(),Xapian::QueryParser::FLAG_PHRASE|Xapian::QueryParser::FLAG_SYNONYM);
|
||||||
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++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -83,6 +83,7 @@ void FirstIndex::DoSomething(const QFileInfo& fileInfo){
|
||||||
}
|
}
|
||||||
|
|
||||||
void FirstIndex::run(){
|
void FirstIndex::run(){
|
||||||
|
QTime t1 = QTime::currentTime();
|
||||||
|
|
||||||
int fifo_fd;
|
int fifo_fd;
|
||||||
char buffer[2];
|
char buffer[2];
|
||||||
|
@ -120,7 +121,9 @@ void FirstIndex::run(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
p_indexGenerator = IndexGenerator::getInstance(false,this);
|
// p_indexGenerator = IndexGenerator::getInstance(false,this);
|
||||||
|
p_indexGenerator = IndexGenerator::getInstance(true,this);
|
||||||
|
|
||||||
}
|
}
|
||||||
QSemaphore sem(5);
|
QSemaphore sem(5);
|
||||||
QMutex mutex1, mutex2, mutex3;
|
QMutex mutex1, mutex2, mutex3;
|
||||||
|
@ -134,21 +137,39 @@ void FirstIndex::run(){
|
||||||
this->setPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
|
this->setPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
|
||||||
this->Traverse();
|
this->Traverse();
|
||||||
FileUtils::_max_index_count = this->q_index->length();
|
FileUtils::_max_index_count = this->q_index->length();
|
||||||
|
qDebug()<<"max_index_count:"<<FileUtils::_max_index_count;
|
||||||
sem.release(5);
|
sem.release(5);
|
||||||
});
|
});
|
||||||
QtConcurrent::run([&](){
|
QtConcurrent::run([&](){
|
||||||
sem.acquire(2);
|
sem.acquire(2);
|
||||||
mutex2.unlock();
|
mutex2.unlock();
|
||||||
qDebug() << "index start;";
|
qDebug() << "index start;";
|
||||||
this->p_indexGenerator->creatAllIndex(this->q_index);
|
QQueue<QVector<QString>>* tmp = new QQueue<QVector<QString>>();
|
||||||
|
while (!this->q_index->empty()) {
|
||||||
|
for (size_t i = 0; (i < 8192) && (!this->q_index->empty()); ++i){
|
||||||
|
tmp->enqueue(this->q_index->dequeue());
|
||||||
|
}
|
||||||
|
this->p_indexGenerator->creatAllIndex(tmp);
|
||||||
|
tmp->clear();
|
||||||
|
}
|
||||||
|
// this->p_indexGenerator->setSynonym();
|
||||||
|
delete tmp;
|
||||||
qDebug() << "index end;";
|
qDebug() << "index end;";
|
||||||
sem.release(2);
|
sem.release(2);
|
||||||
});
|
});
|
||||||
QtConcurrent::run([&](){
|
QtConcurrent::run([&](){
|
||||||
sem.acquire(2);
|
sem.acquire(2);
|
||||||
mutex3.unlock();
|
mutex3.unlock();
|
||||||
qDebug() << "content index start;";
|
QQueue<QString>* tmp = new QQueue<QString>();;
|
||||||
this->p_indexGenerator->creatAllIndex(this->q_content_index);
|
while (!this->q_content_index->empty()) {
|
||||||
|
// for (size_t i = 0; (i < this->u_send_length) && (!this->q_content_index->empty()); ++i){
|
||||||
|
for (size_t i = 0; (i < 30) && (!this->q_content_index->empty()); ++i){
|
||||||
|
tmp->enqueue(this->q_content_index->dequeue());
|
||||||
|
}
|
||||||
|
this->p_indexGenerator->creatAllIndex(tmp);
|
||||||
|
tmp->clear();
|
||||||
|
}
|
||||||
|
delete tmp;
|
||||||
qDebug() << "content index end;";
|
qDebug() << "content index end;";
|
||||||
sem.release(2);
|
sem.release(2);
|
||||||
});
|
});
|
||||||
|
@ -190,6 +211,9 @@ void FirstIndex::run(){
|
||||||
qWarning("write error\n");
|
qWarning("write error\n");
|
||||||
}
|
}
|
||||||
qDebug("write data ok!\n");
|
qDebug("write data ok!\n");
|
||||||
|
QTime t2 = QTime::currentTime();
|
||||||
|
qWarning() << t1;
|
||||||
|
qWarning() << t2;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,9 @@ private:
|
||||||
// QString(".xls"),
|
// QString(".xls"),
|
||||||
// QString(".xlsx"),
|
// QString(".xlsx"),
|
||||||
QString(".txt")};
|
QString(".txt")};
|
||||||
|
|
||||||
|
//xapian will auto commit per 10,000 changes, donnot change it!!!
|
||||||
|
const size_t u_send_length = 8192;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FIRSTINDEX_H
|
#endif // FIRSTINDEX_H
|
||||||
|
|
|
@ -74,14 +74,14 @@ bool IndexGenerator::creatAllIndex(QQueue<QVector<QString> > *messageList)
|
||||||
// m_indexer->set_flags(Xapian::TermGenerator::FLAG_SPELLING);
|
// m_indexer->set_flags(Xapian::TermGenerator::FLAG_SPELLING);
|
||||||
// m_indexer.set_stemming_strategy(Xapian::TermGenerator::STEM_SOME);
|
// m_indexer.set_stemming_strategy(Xapian::TermGenerator::STEM_SOME);
|
||||||
|
|
||||||
int count =0;
|
// int count =0;
|
||||||
for (auto i : *_doc_list_path){
|
for (auto i : *_doc_list_path){
|
||||||
|
|
||||||
insertIntoDatabase(i);
|
insertIntoDatabase(i);
|
||||||
if(++count > 8999){
|
// if(++count > 8999){
|
||||||
count = 0;
|
// count = 0;
|
||||||
m_database_path->commit();
|
// m_database_path->commit();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
m_database_path->commit();
|
m_database_path->commit();
|
||||||
}
|
}
|
||||||
|
@ -148,10 +148,10 @@ IndexGenerator::IndexGenerator(bool rebuild, QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
QDir database(QString::fromStdString(INDEX_PATH));
|
QDir database(QString::fromStdString(INDEX_PATH));
|
||||||
if(database.exists())
|
if(database.exists())
|
||||||
database.removeRecursively();
|
qDebug()<<"remove"<<database.removeRecursively();
|
||||||
database.setPath(QString::fromStdString(CONTENT_INDEX_PATH));
|
database.setPath(QString::fromStdString(CONTENT_INDEX_PATH));
|
||||||
if(database.exists())
|
if(database.exists())
|
||||||
database.removeRecursively();
|
qDebug()<<"remove"<<database.removeRecursively();
|
||||||
}
|
}
|
||||||
m_database_path = new Xapian::WritableDatabase(INDEX_PATH, Xapian::DB_CREATE_OR_OPEN);
|
m_database_path = new Xapian::WritableDatabase(INDEX_PATH, Xapian::DB_CREATE_OR_OPEN);
|
||||||
m_database_content = new Xapian::WritableDatabase(CONTENT_INDEX_PATH, Xapian::DB_CREATE_OR_OPEN);
|
m_database_content = new Xapian::WritableDatabase(CONTENT_INDEX_PATH, Xapian::DB_CREATE_OR_OPEN);
|
||||||
|
@ -266,7 +266,8 @@ void IndexGenerator::HandlePathList(QQueue<QString> *messageList)
|
||||||
ChineseSegmentation::getInstance();
|
ChineseSegmentation::getInstance();
|
||||||
ConstructDocumentForContent *constructer;
|
ConstructDocumentForContent *constructer;
|
||||||
QThreadPool pool;
|
QThreadPool pool;
|
||||||
pool.setMaxThreadCount(((QThread::idealThreadCount() - 1) / 2) + 1);
|
// pool.setMaxThreadCount(((QThread::idealThreadCount() - 1) / 2) + 1);
|
||||||
|
pool.setMaxThreadCount(1);
|
||||||
pool.setExpiryTimeout(100);
|
pool.setExpiryTimeout(100);
|
||||||
while(!messageList->isEmpty())
|
while(!messageList->isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -465,6 +466,71 @@ QStringList IndexGenerator::IndexSearch(QString indexText)
|
||||||
return searchResult;
|
return searchResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//void IndexGenerator::setSynonym()
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// m_database_path->add_synonym("a","A");
|
||||||
|
// m_database_path->add_synonym("b","B");
|
||||||
|
// m_database_path->add_synonym("c","C");
|
||||||
|
// m_database_path->add_synonym("d","D");
|
||||||
|
// m_database_path->add_synonym("e","A");
|
||||||
|
// m_database_path->add_synonym("f","F");
|
||||||
|
// m_database_path->add_synonym("g","G");
|
||||||
|
// m_database_path->add_synonym("h","H");
|
||||||
|
// m_database_path->add_synonym("i","I");
|
||||||
|
// m_database_path->add_synonym("j","J");
|
||||||
|
// m_database_path->add_synonym("k","K");
|
||||||
|
// m_database_path->add_synonym("l","L");
|
||||||
|
// m_database_path->add_synonym("m","M");
|
||||||
|
// m_database_path->add_synonym("n","N");
|
||||||
|
// m_database_path->add_synonym("o","O");
|
||||||
|
// m_database_path->add_synonym("p","P");
|
||||||
|
// m_database_path->add_synonym("q","Q");
|
||||||
|
// m_database_path->add_synonym("r","R");
|
||||||
|
// m_database_path->add_synonym("s","S");
|
||||||
|
// m_database_path->add_synonym("t","T");
|
||||||
|
// m_database_path->add_synonym("u","U");
|
||||||
|
// m_database_path->add_synonym("v","V");
|
||||||
|
// m_database_path->add_synonym("w","W");
|
||||||
|
// m_database_path->add_synonym("x","X");
|
||||||
|
// m_database_path->add_synonym("y","Y");
|
||||||
|
// m_database_path->add_synonym("z","Z");
|
||||||
|
|
||||||
|
// m_database_path->add_synonym("A","a");
|
||||||
|
// m_database_path->add_synonym("B","b");
|
||||||
|
// m_database_path->add_synonym("C","c");
|
||||||
|
// m_database_path->add_synonym("D","d");
|
||||||
|
// m_database_path->add_synonym("E","e");
|
||||||
|
// m_database_path->add_synonym("F","f");
|
||||||
|
// m_database_path->add_synonym("G","g");
|
||||||
|
// m_database_path->add_synonym("H","h");
|
||||||
|
// m_database_path->add_synonym("I","i");
|
||||||
|
// m_database_path->add_synonym("J","j");
|
||||||
|
// m_database_path->add_synonym("K","k");
|
||||||
|
// m_database_path->add_synonym("L","a");
|
||||||
|
// m_database_path->add_synonym("M","m");
|
||||||
|
// m_database_path->add_synonym("N","n");
|
||||||
|
// m_database_path->add_synonym("O","o");
|
||||||
|
// m_database_path->add_synonym("P","p");
|
||||||
|
// m_database_path->add_synonym("Q","q");
|
||||||
|
// m_database_path->add_synonym("R","r");
|
||||||
|
// m_database_path->add_synonym("S","s");
|
||||||
|
// m_database_path->add_synonym("T","t");
|
||||||
|
// m_database_path->add_synonym("U","u");
|
||||||
|
// m_database_path->add_synonym("V","v");
|
||||||
|
// m_database_path->add_synonym("W","w");
|
||||||
|
// m_database_path->add_synonym("X","x");
|
||||||
|
// m_database_path->add_synonym("Y","y");
|
||||||
|
// m_database_path->add_synonym("Z","z");
|
||||||
|
// m_database_path->commit();
|
||||||
|
// }
|
||||||
|
// catch(const Xapian::Error &e)
|
||||||
|
// {
|
||||||
|
// qWarning() <<QString::fromStdString(e.get_description());
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
bool IndexGenerator::deleteAllIndex(QStringList *pathlist)
|
bool IndexGenerator::deleteAllIndex(QStringList *pathlist)
|
||||||
{
|
{
|
||||||
QStringList *list = pathlist;
|
QStringList *list = pathlist;
|
||||||
|
|
|
@ -48,6 +48,7 @@ public:
|
||||||
// Q_INVOKABLE void appendDocListPath(Document doc);
|
// Q_INVOKABLE void appendDocListPath(Document doc);
|
||||||
//for search test
|
//for search test
|
||||||
static QStringList IndexSearch(QString indexText);
|
static QStringList IndexSearch(QString indexText);
|
||||||
|
void setSynonym();
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void transactionFinished();
|
void transactionFinished();
|
||||||
void searchFinish();
|
void searchFinish();
|
||||||
|
|
|
@ -402,7 +402,7 @@ fork:
|
||||||
int rc;
|
int rc;
|
||||||
timeval* read_timeout = (timeval*)malloc(sizeof(timeval));
|
timeval* read_timeout = (timeval*)malloc(sizeof(timeval));
|
||||||
|
|
||||||
read_timeout->tv_sec = 60;
|
read_timeout->tv_sec = 40;
|
||||||
read_timeout->tv_usec = 0;
|
read_timeout->tv_usec = 0;
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue