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
This commit is contained in:
Sebastian Trueg 2011-05-28 21:23:05 +02:00
parent cec59e84e0
commit 4d1d942bbc

View 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);