From 8194476fa6fc43bdd84abdb554368a7d41723dfa Mon Sep 17 00:00:00 2001 From: Albert S Date: Sun, 17 Apr 2022 21:15:58 +0200 Subject: [PATCH] shared: sqlitesearch: Only order by rank if token is FILTER_CONTENT_CONTAINS --- shared/sqlitesearch.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/shared/sqlitesearch.cpp b/shared/sqlitesearch.cpp index e1bb4f5..a335420 100644 --- a/shared/sqlitesearch.cpp +++ b/shared/sqlitesearch.cpp @@ -133,7 +133,8 @@ QSqlQuery SqliteSearch::makeSqlQuery(const LooqsQuery &query) throw LooqsGeneralException("Nothing to search for supplied"); } - for(const Token &token : query.getTokens()) + auto tokens = query.getTokens(); + for(const Token &token : tokens) { if(token.type == FILTER_CONTENT_CONTAINS) { @@ -155,7 +156,11 @@ QSqlQuery SqliteSearch::makeSqlQuery(const LooqsQuery &query) { if(sortSql.isEmpty()) { - sortSql = "ORDER BY rank"; + if(std::find_if(tokens.begin(), tokens.end(), + [](const Token &t) -> bool { return t.type == FILTER_CONTENT_CONTAINS; }) != tokens.end()) + { + sortSql = "ORDER BY rank"; + } } prepSql = "SELECT file.path AS path, group_concat(content.page) AS pages, file.mtime AS mtime, file.size AS size, "