]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Improved query creation. There is absolutely no point in using a
authorSebastian Trueg <trueg@kde.org>
Sat, 28 May 2011 19:23:05 +0000 (21:23 +0200)
committerSebastian Trueg <trueg@kde.org>
Sun, 29 May 2011 07:39:46 +0000 (09:39 +0200)
regular expression in addition to the query created by the query
parser. All it does is majorly slowing down the query execution.

REVIEW: 101462

src/search/dolphinsearchbox.cpp

index c4cc2cfc37fb91a2d6de7b96973781f25ddd7b36..803f0056ecfb98daeb03632b2e8cf514cd5ea253 100644 (file)
@@ -364,31 +364,29 @@ void DolphinSearchBox::init()
 KUrl DolphinSearchBox::nepomukUrlForSearching() const
 {
 #ifdef HAVE_NEPOMUK
-    Nepomuk::Query::OrTerm orTerm;
+    Nepomuk::Query::Term term;
 
     const QString text = m_searchInput->text();
 
-    // Search the text in the filename in any case
-    QString regex = QRegExp::escape(text);
-    regex.replace("\\*", QLatin1String(".*"));
-    regex.replace("\\?", QLatin1String("."));
-    regex.replace("\\", "\\\\");
-    orTerm.addSubTerm(Nepomuk::Query::ComparisonTerm(
-                            Nepomuk::Vocabulary::NFO::fileName(),
-                            Nepomuk::Query::LiteralTerm(regex),
-                            Nepomuk::Query::ComparisonTerm::Regexp));
-
     if (m_contentButton->isChecked()) {
-        // Search the text also in the content of the files
-        const Nepomuk::Query::Query customQuery = Nepomuk::Query::QueryParser::parseQuery(text, Nepomuk::Query::QueryParser::DetectFilenamePattern);
-        if (customQuery.isValid()) {
-            orTerm.addSubTerm(customQuery.term());
-        }
+        // Let Nepomuk parse the query
+        term = Nepomuk::Query::QueryParser::parseQuery(text, Nepomuk::Query::QueryParser::DetectFilenamePattern).term();
+    }
+    else {
+        // Search the text in the filename only
+        QString regex = QRegExp::escape(text);
+        regex.replace("\\*", QLatin1String(".*"));
+        regex.replace("\\?", QLatin1String("."));
+        regex.replace("\\", "\\\\");
+        term = Nepomuk::Query::ComparisonTerm(
+                    Nepomuk::Vocabulary::NFO::fileName(),
+                    Nepomuk::Query::LiteralTerm(regex),
+                    Nepomuk::Query::ComparisonTerm::Regexp);
     }
 
     Nepomuk::Query::FileQuery fileQuery;
     fileQuery.setFileMode(Nepomuk::Query::FileQuery::QueryFilesAndFolders);
-    fileQuery.setTerm(orTerm);
+    fileQuery.setTerm(term);
     if (m_fromHereButton->isChecked()) {
         const bool recursive = true;
         fileQuery.addIncludeFolder(m_searchPath, recursive);