Extracted buildXapianQuery()

This commit is contained in:
Veloman Yunkan 2021-04-11 19:51:32 +04:00
parent 80cd1fc989
commit ea779ac200
1 changed files with 16 additions and 5 deletions

View File

@ -295,12 +295,11 @@ void Library::updateBookDB(const Book& book)
m_bookDB->replace_document(idterm, doc); m_bookDB->replace_document(idterm, doc);
} }
Library::BookIdCollection Library::filterViaBookDB(const Filter& filter) namespace
{ {
if ( !filter.hasQuery() )
return getBooksIds();
BookIdCollection bookIds; Xapian::Query buildXapianQuery(const Filter& filter)
{
Xapian::QueryParser queryParser; Xapian::QueryParser queryParser;
queryParser.set_default_op(Xapian::Query::OP_AND); queryParser.set_default_op(Xapian::Query::OP_AND);
queryParser.add_prefix("title", "S"); queryParser.add_prefix("title", "S");
@ -317,7 +316,19 @@ Library::BookIdCollection Library::filterViaBookDB(const Filter& filter)
| Xapian::QueryParser::FLAG_LOVEHATE | Xapian::QueryParser::FLAG_LOVEHATE
| Xapian::QueryParser::FLAG_WILDCARD | Xapian::QueryParser::FLAG_WILDCARD
| partialQueryFlag; | partialQueryFlag;
const auto query = queryParser.parse_query(filter.getQuery(), flags); return queryParser.parse_query(filter.getQuery(), flags);
}
} // unnamed namespace
Library::BookIdCollection Library::filterViaBookDB(const Filter& filter)
{
if ( !filter.hasQuery() )
return getBooksIds();
BookIdCollection bookIds;
const auto query = buildXapianQuery(filter);
Xapian::Enquire enquire(*m_bookDB); Xapian::Enquire enquire(*m_bookDB);
enquire.set_query(query); enquire.set_query(query);
const auto results = enquire.get_mset(0, m_books.size()); const auto results = enquire.get_mset(0, m_books.size());