diff --git a/src/engine/termgenerator.cpp b/src/engine/termgenerator.cpp --- a/src/engine/termgenerator.cpp +++ b/src/engine/termgenerator.cpp @@ -84,6 +84,11 @@ void TermGenerator::indexText(const QString& text, const QByteArray& prefix) { const QByteArrayList terms = termList(text); + if (terms.size() == 1) { + QByteArray finalArr = prefix + terms[0]; + m_doc.addTerm(finalArr); + return; + } for (const QByteArray& term : terms) { QByteArray finalArr = prefix + term; @@ -96,6 +101,11 @@ void TermGenerator::indexFileNameText(const QString& text, const QByteArray& prefix) { const QByteArrayList terms = termList(text); + if (terms.size() == 1) { + QByteArray finalArr = prefix + terms[0]; + m_doc.addFileNameTerm(finalArr); + return; + } for (const QByteArray& term : terms) { QByteArray finalArr = prefix + term; @@ -113,6 +123,11 @@ void TermGenerator::indexXattrText(const QString& text, const QByteArray& prefix) { const QByteArrayList terms = termList(text); + if (terms.size() == 1) { + QByteArray finalArr = prefix + terms[0]; + m_doc.addXattrTerm(finalArr); + return; + } for (const QByteArray& term : terms) { QByteArray finalArr = prefix + term; diff --git a/src/engine/transaction.cpp b/src/engine/transaction.cpp --- a/src/engine/transaction.cpp +++ b/src/engine/transaction.cpp @@ -349,6 +349,10 @@ } if (query.op() == EngineQuery::Phrase) { + if (subQueries.size() == 1) { + qCDebug(ENGINE) << "Degenerated Phrase with 1 Term:" << query; + return postingIterator(subQueries[0]); + } QVector vec; vec.reserve(subQueries.size()); for (const EngineQuery& q : subQueries) {