On Thu, Apr 14, 2005 at 02:04:43PM +0000, Ivar Bratberg
wrote:> Hello, I try to search for an e-mail,
> ex. sales@mysql.com
> But using queryparser
>
> qp.set_stemming_options("english");
> qp.set_database(*pdatabase);
> qp.set_default_op(Query::OP_AND);
>
> query p=qp.parse_query("
\"\"sales@mysql.com\"\".")
>
> cout << p.get_description
> still gives
> Query Xapian::Query((sale:(pos=1) PHRASE 3 mysql:(pos=2) PHRASE 3
> com:(pos=3))
>
> I doesn't see the email as one item
QueryParser expects an email address to be indexed as separate terms and
so searches for it as a phrase. The benefit is that searches can match
the individual words - e.g. you can search for: mysql sales
A potential downside is that this doesn't actually require the "@"
and
"." to be there, but in practice this is rarely a problem. Google
seems
to handle email addresses similarly, incidentally.
One real issue is that phrase searches can be more expensive in some
cases. It's also a problem if you aren't indexing with positional
information. I suspect we might benefit from generating a single term
for an email address (probably keeping the separate terms too).
Cheers,
Olly