lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mindaugas Žakšauskas <min...@gmail.com>
Subject QueryParser/StopAnalyzer question
Date Tue, 17 May 2011 14:05:54 GMT
Hi,

Let's say we have an index having few documents indexed using
StopAnalyzer.ENGLISH_STOP_WORDS_SET. The user issues two queries:
1) foo:bar
2) baz:"there is"

Let's assume that the first query yields some results because there
are documents matching that query.

The second query contains two stopwords ("there" and "is") and yields
0 results. The reason for this is because when baz:"there is" is
parsed, it ends up as a void query as both "there" and "is" are
stopwords (technically speaking, this is converted to an empty
BooleanQuery having no clauses). So far so good.

However, any of the following combined queries

+foo:bar +baz:"there is"
foo:bar AND baz:"there is"

behave exactly the same way as query +foo:bar, that is, brings back
some results. The second AND part which is supposed to yield no
results is completely ignored.

One might argue that when ANDing both conditions have to be met, that
is, documents having foo=bar and baz being empty have to be retrieved,
as when issued seperately, baz:"there is" yields 0 results.

It seem contradictory as an atomic query component has different
impact on the overall query depending on the context. Is there any
logical explanation for this? Can this be addressed in any way,
preferably without writing own QueryAnalyzer?

If this makes any difference, observed behaviour happens under Lucene v3.0.2.

Regards,
Mindaugas

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message