@ -477,7 +477,11 @@ Store::remove_messages_by_term(std::span<const std::string> terms,
|
|||||||
enq.set_docid_order(Xapian::Enquire::ASCENDING);
|
enq.set_docid_order(Xapian::Enquire::ASCENDING);
|
||||||
enq.set_query(Xapian::Query{Xapian::Query::OP_OR, qvec.begin(), qvec.end()});
|
enq.set_query(Xapian::Query{Xapian::Query::OP_OR, qvec.begin(), qvec.end()});
|
||||||
auto mset = enq.get_mset(0, xapian_db().size());
|
auto mset = enq.get_mset(0, xapian_db().size());
|
||||||
ids_to_remove.insert(ids_to_remove.end(), mset.begin(), mset.end());
|
// Work around Xapian MSetIterator trait mismatch:
|
||||||
|
// https://trac.xapian.org/ticket/850
|
||||||
|
ids_to_remove.reserve(ids_to_remove.size() + mset.size());
|
||||||
|
for (auto it = mset.begin(); it != mset.end(); ++it)
|
||||||
|
ids_to_remove.push_back(*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort the IDs to remove to make Xapian tree traversal easier
|
// Sort the IDs to remove to make Xapian tree traversal easier
|
||||||
|
|||||||
Reference in New Issue
Block a user