lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Erick Erickson" <>
Subject Re: AND query in SHOULD
Date Thu, 22 Nov 2007 13:26:27 GMT
The semantics of the phrase query you're constructing probably aren't
what you think. As best I can infer, you are trying to do something

"green tree" in field1
"green tree" in field 2

but that's not even close to what you're constructing.

It would help a show what the query you want is in some form
like that above before trying to code it, because the actual
query you're making is something like asking for the phrase
"word1 in field1 word1 in field2 word2 in field1 word2 in field2"

Actually, I can't render the semantics of what you're doing int English.
And Lucene can't parse it either.

I suspect you want something like
PhraseQuery pq1
PhraseQuery pq2
for (String word : words) {
BooleanQuery bq().
bq.add(p1, ....  SHOULD);
bq.add(p2, ... SHOULD);;


On Nov 22, 2007 7:17 AM, Rapthor <> wrote:

> There is no option to provide an Occur.SHOULD to the PhraseQuery. So where
> does it go? I changed the source to look like this:
> PhraseQuery pq = new PhraseQuery();
> for (String word : words) {
>        for (String field : fields) {
>                pq.add(new Term(field, word));
>        }
> }
> Hits hits =;
> However, I get an exception:
> java.lang.IllegalArgumentException: All phrase terms must be in the same
> field: description:green tree
> I don't understand how to a) search for combinations of words like "green
> tree", b) search in multiple fields (description, text, ...) and c) search
> by a SHOULD restriction.
> --
> View this message in context:
> Sent from the Lucene - Java Users mailing list archive at
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message