diff --git a/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/maincontroller.cpp b/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/maincontroller.cpp index 9e1c88a541..71b05b8c5c 100644 --- a/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/maincontroller.cpp +++ b/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/maincontroller.cpp @@ -56,8 +56,8 @@ bool MainController::doSearchTask(QString taskId, const QUrl &url, const QString stop(taskId); auto task = new TaskCommander(taskId, url, keyword); - qInfo() << "new task: " << task << task->taskID(); Q_ASSERT(task); + qInfo() << "new task: " << task << task->taskID(); //直连,防止1被事件循环打乱时序 connect(task, &TaskCommander::matched, this, &MainController::matched, Qt::DirectConnection); @@ -94,7 +94,9 @@ void MainController::onIndexFullTextSearchChanged(bool enable) if (enable && !indexFuture.isRunning()) { indexFuture = QtConcurrent::run([]() { FullTextSearcher searcher(QUrl(), ""); + qInfo() << "create index for full-text search"; searcher.createIndex("/"); + qInfo() << "create index for full-text search done"; }); } } diff --git a/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/task/taskcommander.cpp b/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/task/taskcommander.cpp index 39a1744342..3f04831ad9 100644 --- a/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/task/taskcommander.cpp +++ b/src/plugins/filemanager/dfmplugin-search/searchmanager/maincontroller/task/taskcommander.cpp @@ -31,12 +31,17 @@ void TaskCommanderPrivate::working(AbstractSearcher *searcher) AbstractSearcher *TaskCommanderPrivate::createFileNameSearcher(const QUrl &url, const QString &keyword) { bool isBindPath = false; - if (AnythingSearcher::isSupported(url, isBindPath)) + if (AnythingSearcher::isSupported(url, isBindPath)) { + qInfo() << "Using anything for file name search"; return new AnythingSearcher(url, keyword, isBindPath, q); + } - if (FSearcher::isSupport(url)) + if (FSearcher::isSupport(url)) { + qInfo() << "Using fsearch for file name search"; return new FSearcher(url, keyword, q); + } + qInfo() << "Using iterator for file name search"; return new IteratorSearcher(url, keyword, q); } @@ -58,7 +63,6 @@ void TaskCommanderPrivate::onUnearthed(AbstractSearcher *searcher) void TaskCommanderPrivate::onFinished() { - qDebug() << __FUNCTION__ << allSearchers.size() << finished << sender(); // 工作线程退出,若之前调用了deleteSelf那么在这里执行释放,否则发送结束信号 if (futureWatcher.isFinished()) { if (deleted) { @@ -117,7 +121,7 @@ bool TaskCommander::start() void TaskCommander::stop() { - qDebug() << "stop" << this->taskID(); + qInfo() << "stop" << this->taskID(); d->futureWatcher.cancel(); for (auto searcher : d->allSearchers) { @@ -144,6 +148,7 @@ void TaskCommander::createSearcher(const QUrl &url, const QString &keyword) FullTextSearcher *searcher = new FullTextSearcher(url, keyword, this); //直连,在线程处理 connect(searcher, &AbstractSearcher::unearthed, d, &TaskCommanderPrivate::onUnearthed, Qt::DirectConnection); + qInfo() << "Using Full-Text search"; d->allSearchers << searcher; } diff --git a/src/plugins/filemanager/dfmplugin-search/searchmanager/searcher/fulltext/fulltextsearcher.cpp b/src/plugins/filemanager/dfmplugin-search/searchmanager/searcher/fulltext/fulltextsearcher.cpp index 6f3fcc2621..e7649f61bf 100644 --- a/src/plugins/filemanager/dfmplugin-search/searchmanager/searcher/fulltext/fulltextsearcher.cpp +++ b/src/plugins/filemanager/dfmplugin-search/searchmanager/searcher/fulltext/fulltextsearcher.cpp @@ -11,6 +11,7 @@ #include #include #include +#include // Lucune++ headers #include @@ -20,7 +21,6 @@ #include #include -#include #include #include #include @@ -112,8 +112,10 @@ void FullTextSearcherPrivate::doIndexTask(const IndexReaderPtr &reader, const In if (is_dir) { doIndexTask(reader, writer, fn, type); } else { - QFileInfo info(fn); - QString suffix = info.suffix(); + auto info = InfoFactory::create(QUrl::fromLocalFile(fn)); + if (!info) continue; + + QString suffix = info->nameOf(NameInfoType::kSuffix); static QRegExp suffixRegExp(kSupportFiles); if (suffixRegExp.exactMatch(suffix)) { switch (type) { @@ -172,7 +174,7 @@ void FullTextSearcherPrivate::indexDocs(const IndexWriterPtr &writer, const QStr QMetaEnum enumType = QMetaEnum::fromType(); qWarning() << QString(e.what()) << " type: " << enumType.valueToKey(type); } catch (...) { - qWarning() << "Error: " << __FUNCTION__ << file; + qWarning() << "Index document failed! " << file; } } @@ -192,8 +194,11 @@ bool FullTextSearcherPrivate::checkUpdate(const IndexReaderPtr &reader, const QS return true; } else { DocumentPtr doc = searcher->doc(topDocs->scoreDocs[0]->doc); - QFileInfo info(file); - QString modifyTime = info.lastModified().toString("yyyyMMddHHmmss"); + auto info = InfoFactory::create(QUrl::fromLocalFile(file)); + if (!info) + return false; + + QString modifyTime = QString::number(info->timeOf(TimeInfoType::kLastModified).toLongLong()); String storeTime = doc->get(L"modified"); if (modifyTime.toStdWString() != storeTime) { @@ -202,11 +207,11 @@ bool FullTextSearcherPrivate::checkUpdate(const IndexReaderPtr &reader, const QS } } } catch (const LuceneException &e) { - qWarning() << "Error: " << __FUNCTION__ << QString::fromStdWString(e.getError()) << " file: " << file; + qWarning() << QString::fromStdWString(e.getError()) << " file: " << file; } catch (const std::exception &e) { - qWarning() << "Error: " << __FUNCTION__ << QString(e.what()) << " file: " << file; + qWarning() << QString(e.what()) << " file: " << file; } catch (...) { - qWarning() << "Error: " << __FUNCTION__ << " file: " << file; + qWarning() << "The file checked failed!" << file; } return false; @@ -229,8 +234,8 @@ DocumentPtr FullTextSearcherPrivate::fileDocument(const QString &file) doc->add(newLucene(L"path", file.toStdWString(), Field::STORE_YES, Field::INDEX_NOT_ANALYZED)); // file last modified time - QFileInfo info(file); - QString modifyTime = info.lastModified().toString("yyyyMMddHHmmss"); + auto info = InfoFactory::create(QUrl::fromLocalFile(file)); + QString modifyTime = QString::number(info->timeOf(TimeInfoType::kLastModified).toLongLong()); doc->add(newLucene(L"modified", modifyTime.toStdWString(), Field::STORE_YES, Field::INDEX_NOT_ANALYZED)); // file contents @@ -266,7 +271,8 @@ bool FullTextSearcherPrivate::createIndex(const QString &path) QTime timer; timer.start(); IndexWriterPtr writer = newIndexWriter(true); - qDebug() << "Indexing to directory: " << indexStorePath(); + qInfo() << "Indexing to directory: " << indexStorePath(); + writer->deleteAll(); doIndexTask(nullptr, writer, path, kCreate); writer->optimize(); @@ -276,11 +282,11 @@ bool FullTextSearcherPrivate::createIndex(const QString &path) status.storeRelease(AbstractSearcher::kCompleted); return true; } catch (const LuceneException &e) { - qWarning() << "Error: " << __FUNCTION__ << QString::fromStdWString(e.getError()); + qWarning() << QString::fromStdWString(e.getError()); } catch (const std::exception &e) { - qWarning() << "Error: " << __FUNCTION__ << QString(e.what()); + qWarning() << QString(e.what()); } catch (...) { - qWarning() << "Error: " << __FUNCTION__; + qWarning() << "The file index created failed!"; } status.storeRelease(AbstractSearcher::kCompleted); @@ -302,11 +308,11 @@ bool FullTextSearcherPrivate::updateIndex(const QString &path) return true; } catch (const LuceneException &e) { - qWarning() << "Error: " << __FUNCTION__ << QString::fromStdWString(e.getError()); + qWarning() << QString::fromStdWString(e.getError()); } catch (const std::exception &e) { - qWarning() << "Error: " << __FUNCTION__ << QString(e.what()); + qWarning() << QString(e.what()); } catch (...) { - qWarning() << "Error: " << __FUNCTION__; + qWarning() << "The file index updated failed!"; } return false; @@ -350,14 +356,15 @@ bool FullTextSearcherPrivate::doSearch(const QString &path, const QString &keywo String resultPath = doc->get(L"path"); if (!resultPath.empty()) { - QFileInfo info(QString::fromStdWString(resultPath)); + const QUrl &url = QUrl::fromLocalFile(StringUtils::toUTF8(resultPath).c_str()); + auto info = InfoFactory::create(url); // delete invalid index - if (!info.exists()) { - indexDocs(writer, info.absoluteFilePath(), kDeleteIndex); + if (!info || !info->exists()) { + indexDocs(writer, url.path(), kDeleteIndex); continue; } - QString modifyTime = info.lastModified().toString("yyyyMMddHHmmss"); + QString modifyTime = QString::number(info->timeOf(TimeInfoType::kLastModified).toLongLong()); String storeTime = doc->get(L"modified"); if (modifyTime.toStdWString() != storeTime) { continue; @@ -378,11 +385,11 @@ bool FullTextSearcherPrivate::doSearch(const QString &path, const QString &keywo reader->close(); writer->close(); } catch (const LuceneException &e) { - qWarning() << "Error: " << __FUNCTION__ << QString::fromStdWString(e.getError()); + qWarning() << QString::fromStdWString(e.getError()); } catch (const std::exception &e) { - qWarning() << "Error: " << __FUNCTION__ << QString(e.what()); + qWarning() << QString(e.what()); } catch (...) { - qWarning() << "Error: " << __FUNCTION__; + qWarning() << "Search failed!"; } return true; diff --git a/src/plugins/filemanager/dfmplugin-search/utils/searchhelper.cpp b/src/plugins/filemanager/dfmplugin-search/utils/searchhelper.cpp index cc3eaccb9d..9323c2630c 100644 --- a/src/plugins/filemanager/dfmplugin-search/utils/searchhelper.cpp +++ b/src/plugins/filemanager/dfmplugin-search/utils/searchhelper.cpp @@ -173,7 +173,7 @@ bool SearchHelper::blockPaste(quint64 winId, const QList &fromUrls, const Q_UNUSED(fromUrls) if (to.scheme() == SearchHelper::scheme()) { - qDebug() << "The search root directory does not support paste!"; + qInfo() << "The search root directory does not support paste!"; return true; } return false;