On Aug 12, 2005, at 3:11 PM, Lasse L wrote:
I am using the queryparser to search for names.
If I search for: john j*
I'd expect to get everybody called john j-something. john johnson,
john joe doe ect.
Instead I just all john and joes. In many of the hits there is not
second j-word.
That is an invalid assumption with QueryParser and how it forms
queries. And it actually is a tricky sort of query to do even
programatically.
The query john j* (with default operator AND) searches for john AND
j* regardless of position.
Programatically you can use PhrasePrefixQuery - see Lucene's test
case code for examples of how it's used, but it is a bit of work to
set up.
Is there a way to get lucene to get "satisfied" after matching "john"
and then require a second j-word to return a match for j*
In short, not easily, but it is possible with PhrasePrefixQuery
programatically. QueryParser does not support this at all currently.
Erik
The error might be on my end though.
If I have the same person registered as "john carlson" and "john
doe carlson"
I add both values to the name field -- could that be it? If that is so
I wouldn't expect lucene to return the hit if I search for e.g. "john
joh* jo*" ?
At least I'd like to boost the ranking of the results that match
better. Right now "john j*" gives me john thompson as the top hit even
though there are heaps of john johnsons.
I hope you can point me in the right direction.
Thanks
/Lasse
My query parser code looks like this:
QueryParser parser = new QueryParser(field, _analyzer);
parser.setOperator(QueryParser.DEFAULT_OPERATOR_AND);
parser.setLocale(new Locale("DA", "dk"));
Query q = parser.parse(value);
query.add(q, required, false);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]