From 15a587ebb3c11d2da7ecd61fb7572f3644c7ef87 Mon Sep 17 00:00:00 2001 From: lichaofan Date: Fri, 9 Aug 2024 14:52:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=BE=E5=9B=BE=E7=89=87=E7=B1=BB?= =?UTF-8?q?=E3=80=81=E9=9F=B3=E4=B9=90=E7=B1=BB=E5=8A=9F=E8=83=BD=E7=9A=84?= =?UTF-8?q?=E5=AE=8C=E5=96=84=EF=BC=88=E6=97=A0=E5=AE=9E=E4=BD=93=E6=97=B6?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Description: 找图片类、音乐类功能的完善(无实体时) Log: 找图片类、音乐类功能的完善(无实体时) --- .../semantic/database/anythingquery.cpp | 29 +++++++++---------- .../semantic/database/anythingquery_p.h | 4 ++- .../searcher/semantic/semantichelper.cpp | 18 +++++++++++- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/libgrand-search-daemon/searcher/semantic/database/anythingquery.cpp b/src/libgrand-search-daemon/searcher/semantic/database/anythingquery.cpp index 97b51202..34c30119 100644 --- a/src/libgrand-search-daemon/searcher/semantic/database/anythingquery.cpp +++ b/src/libgrand-search-daemon/searcher/semantic/database/anythingquery.cpp @@ -8,6 +8,7 @@ #include "searcher/file/filesearchutils.h" #include "global/builtinsearch.h" #include "searcher/semantic/fileresultshandler.h" +#include "global/commontools.h" using namespace GrandSearch; @@ -80,8 +81,9 @@ bool AnythingQueryPrivate::searchUserPath(PushItemCallBack callBack, void *pdata continue; // 去除掉添加的data前缀 - if (m_hasAddDataPrefix && absoluteFilePath.startsWith("/data")) - absoluteFilePath = absoluteFilePath.mid(5); + if (m_hasTransformed && absoluteFilePath.startsWith(m_searchPath)) + absoluteFilePath.replace(m_searchPath, m_originalSearchPath); + m_count++; if (m_handler) { m_handler->appendTo(absoluteFilePath, items); @@ -158,8 +160,8 @@ bool AnythingQueryPrivate::searchByAnything(PushItemCallBack callBack, void *pda } // 去除掉添加的data前缀 - if (m_hasAddDataPrefix && path.startsWith("/data")) - path = path.mid(5); + if (m_hasTransformed && path.startsWith(m_searchPath)) + path.replace(m_searchPath, m_originalSearchPath); // 检查时间 QFileInfo info(path); @@ -223,7 +225,7 @@ QString AnythingQueryPrivate::getRegExp() const // 后缀名 QStringList suffixs = SemanticHelper::typeTosuffix(m_entity.types); if (!suffixs.isEmpty()) - regStr += QString(R"(\.(%0))").arg(suffixs.join('|')); + regStr += QString(R"(\.(%0)$)").arg(suffixs.join('|')); return regStr; } @@ -270,17 +272,14 @@ void AnythingQuery::run(void *ptr, PushItemCallBack callBack, void *pdata) bool useAnything = true; if (!d->m_anythingInterface->hasLFT(d->m_searchPath)) { // 有可能 anything 不支持/home目录,但是支持/data/home - if (QFile("/data/home").exists()) { - d->m_searchPath.prepend("/data"); - if (!d->m_anythingInterface->hasLFT(d->m_searchPath)) { - qWarning() << "Do not support quick search for " << d->m_searchPath; - useAnything = false; - } else { - d->m_hasAddDataPrefix = true; - } - } else { - qWarning() << "Data path is not exist!"; + const QString &tmpPath = CommonTools::bindPathTransform(d->m_searchPath, true); + if (!d->m_anythingInterface->hasLFT(tmpPath)) { + qWarning() << "Do not support quick search for " << tmpPath; useAnything = false; + } else { + d->m_originalSearchPath = d->m_searchPath; + d->m_searchPath = tmpPath; + d->m_hasTransformed = true; } } d->m_time.start(); diff --git a/src/libgrand-search-daemon/searcher/semantic/database/anythingquery_p.h b/src/libgrand-search-daemon/searcher/semantic/database/anythingquery_p.h index b728842d..53eb59e1 100644 --- a/src/libgrand-search-daemon/searcher/semantic/database/anythingquery_p.h +++ b/src/libgrand-search-daemon/searcher/semantic/database/anythingquery_p.h @@ -26,8 +26,10 @@ class AnythingQueryPrivate ComDeepinAnythingInterface *m_anythingInterface = nullptr; SemanticEntity m_entity; QString m_searchPath; + QString m_originalSearchPath; + bool m_hasTransformed = false; + QStringList m_searchDirList; - bool m_hasAddDataPrefix = false; FileResultsHandler *m_handler = nullptr; QTime m_time; int m_lastPush = 0; diff --git a/src/libgrand-search-daemon/searcher/semantic/semantichelper.cpp b/src/libgrand-search-daemon/searcher/semantic/semantichelper.cpp index af315391..b86abbc7 100644 --- a/src/libgrand-search-daemon/searcher/semantic/semantichelper.cpp +++ b/src/libgrand-search-daemon/searcher/semantic/semantichelper.cpp @@ -71,8 +71,14 @@ bool SemanticHelper::entityFromJson(const QString &json, SemanticEntity &out) for (auto ro = entityObj.begin(); ro != entityObj.end(); ++ro) { if (ro->isString()){ QString key = ro->toString().trimmed(); - if (!key.isEmpty()) + if (!key.isEmpty()) { + // 去除模型概率性带出的[SEP]...后缀 + int pos = key.indexOf("["); + if (pos != -1) { + key = key.mid(0, pos); + } out.keys.append(key); + } } } @@ -113,6 +119,16 @@ bool SemanticHelper::entityFromJson(const QString &json, SemanticEntity &out) for (const QString &txt : timeOfKey) out.keys.removeOne(txt); + // 组装log打印内容,方便查看 + QString types, keys; + for (const QString &str : out.types) { + types.append(str).append(", "); + } + for (const QString &str : out.keys) { + keys.append(str).append(", "); + } + qInfo() << QString("types(%1) keys(%2)").arg(types).arg(keys); + return true; }