From: Sebastian Trueg Date: Sat, 28 May 2011 19:23:05 +0000 (+0200) Subject: Improved query creation. There is absolutely no point in using a X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/18d8150848811eddfa67b1756b4ecf01d9cf11c9 Improved query creation. There is absolutely no point in using a regular expression in addition to the query created by the query parser. All it does is majorly slowing down the query execution. REVIEW: 101462 --- diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp index c4cc2cfc3..803f0056e 100644 --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -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);