11#include "akonadi_search_pim_debug.h"
13#include "resultiterator_p.h"
18#include <QStandardPaths>
22class Akonadi::Search::PIM::NoteQueryPrivate
25 NoteQueryPrivate() =
default;
33 : d(new NoteQueryPrivate)
37NoteQuery::~NoteQuery() =
default;
39void NoteQuery::matchTitle(
const QString &title)
44void NoteQuery::matchNote(
const QString ¬e)
49void NoteQuery::setLimit(
int limit)
54int NoteQuery::limit()
const
61 const QString
dir = defaultLocation(QStringLiteral(
"notes"));
66 }
catch (
const Xapian::DatabaseOpeningError &) {
67 qCWarning(AKONADI_SEARCH_PIM_LOG) <<
"Xapian Database does not exist at " <<
dir;
69 }
catch (
const Xapian::DatabaseCorruptError &) {
70 qCWarning(AKONADI_SEARCH_PIM_LOG) <<
"Xapian Database corrupted";
72 }
catch (
const Xapian::DatabaseError &e) {
73 qCWarning(AKONADI_SEARCH_PIM_LOG) <<
"Failed to open Xapian database:" <<
QString::fromStdString(e.get_error_string());
76 qCWarning(AKONADI_SEARCH_PIM_LOG) <<
"Random exception, but we do not want to crash";
80 QList<Xapian::Query> m_queries;
82 if (!d->note.isEmpty()) {
83 Xapian::QueryParser parser;
84 parser.set_database(db);
85 parser.add_prefix(
"",
"BO");
87 const QByteArray baNote = d->note.toUtf8();
88 m_queries << parser.parse_query(baNote.
constData(), Xapian::QueryParser::FLAG_PARTIAL);
91 if (!d->title.isEmpty()) {
92 Xapian::QueryParser parser;
93 parser.set_database(db);
94 parser.add_prefix(
"",
"SU");
95 parser.set_default_op(Xapian::Query::OP_AND);
97 const QByteArray baTitle = d->title.toUtf8();
98 m_queries << parser.parse_query(baTitle.
constData(), Xapian::QueryParser::FLAG_PARTIAL);
101 Xapian::Query
query(Xapian::Query::OP_OR, m_queries.
begin(), m_queries.
end());
104 Xapian::Enquire enquire(db);
105 enquire.set_query(query);
111 Xapian::MSet matches = enquire.get_mset(0, d->limit);
114 iter.d->init(matches);
116 }
catch (
const Xapian::Error &e) {
KSERVICE_EXPORT KService::List query(FilterFunc filterFunc)
KIOCORE_EXPORT QString dir(const QString &fileClass)
const char * constData() const const
QByteArray encodeName(const QString &fileName)
QString fromStdString(const std::string &str)