From d050d4ea286616cc1e8dcc1161ca97f5704e8031 Mon Sep 17 00:00:00 2001 From: iaom <18504285112@163.com> Date: Thu, 1 Apr 2021 20:41:22 +0800 Subject: [PATCH] [Fix] Snippet will not be displayed correctly when file content is too short. --- libsearch/index/search-manager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libsearch/index/search-manager.cpp b/libsearch/index/search-manager.cpp index c59a184..d0a5e59 100644 --- a/libsearch/index/search-manager.cpp +++ b/libsearch/index/search-manager.cpp @@ -396,7 +396,10 @@ int FileContentSearch::getResult(Xapian::MSet &result, std::string &keyWord) { std::string s = data.substr((*pos < 60)? 0: (*pos - 60) , size + 120); QString snippet = QString::fromStdString(s); - snippet.replace(0,3,"...").replace(snippet.size()-3,3,"..."); + if(snippet.size() > 6 + QString::fromStdString(keyWord).size()) + snippet.replace(0,3,"...").replace(snippet.size()-3,3,"..."); + else + snippet.append("...").prepend("..."); snippets.append(snippet); QString().swap(snippet); std::string().swap(s);