lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik Hatcher <>
Subject Re: Query that doesn't match a term more than once
Date Fri, 12 Aug 2005 23:58:25 GMT

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  

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.


> 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:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message