[Xapian-discuss] Wildcard search?
Olly Betts
olly at survex.com
Mon Jul 4 16:03:00 BST 2005
On Mon, Jul 04, 2005 at 02:34:17PM +0200, roki roki wrote:
> is it possible to implement wildcard (at right side) search in xapian?
Yes - create a TermIterator using Database::allterms_begin(), skip_to()
the prefix, then read terms which match the prefix and OR them together
like so:
TermIterator t = db.allterms_begin();
t.skip_to(name);
Query q;
while (t != db.allterms_end() && (*t).substr(0, name.size()) == name) {
if (q.empty()) {
q = Query(*t, 1, pos);
} else {
q = Query(Query::OP_OR, q, Query(*t, 1, pos));
}
++t;
}
I've just checked this in for the QueryParser class. Disabled by default
since not everyone will want to allow it - pass
Xapian::QueryParser::FLAG_WILDCARD in the new bitmask parameter to parse_query
to turn it on.
Cheers,
Olly
More information about the Xapian-discuss
mailing list