lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hoss Man (JIRA)" <>
Subject [jira] Commented: (LUCENE-933) QueryParser can produce empty sub BooleanQueries when Analyzer proudces no tokens for input
Date Wed, 20 Jun 2007 01:10:25 GMT


Hoss Man commented on LUCENE-933:

> I feel comfortable with applying the logic we have for a single (stop)word on a group
> (stop)words, i.e. making the added lines pass.


> Interestingly, consider this query:
>       A  B +(+C -C)

perhaps an alternate way to view this problem would be to ask:  what should QueryParser do,
if asked to parse this string...
        A B +()

...if the answer is "treat it like 'A B'" then i think we're okay with the approach you described
above.  if the answer is "an empty query doesn't match anything, so requiring a match on a
clause which is an empty query should result in the outer query matching nothing"  then we've
got a problem ... mainly that it contradicts the example you cited from TestQueryParser.testQPA()
if you replace "an empty query" in the previous statement with "a query on a stop word"

personally, i think it's okay to say "A  B +(+C -C)" == "A B" if the analyzer doesn't produce
any tokens for C.

> QueryParser can produce empty sub BooleanQueries when Analyzer proudces no tokens for
> -------------------------------------------------------------------------------------------
>                 Key: LUCENE-933
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>            Reporter: Hoss Man
> as triggered by SOLR-261, if you have a query like this...
>    +foo:BBB  +(yak:AAA  baz:CCC)
> ...where the analyzer produces no tokens for the "yak:AAA" or "baz:CCC" portions of the
query (posisbly because they are stop words) the resulting query produced by the QueryParser
will be...
>   +foo:BBB +()
> ...that is a BooleanQuery with two required clauses, one of which is an empty BooleanQuery
with no clauses.
> this does not appear to be "good" behavior.
> In general, QueryParser should be smarter about what it does when parsing encountering
parens whose contents result in an empty BooleanQuery -- but what exactly it should do in
the following situations...
>  a)  +foo:BBB +()
>  b)  +foo:BBB ()
>  c)  +foo:BBB -()
> up for interpretation.  I would think situation (b) clearly lends itself to dropping
the sub-BooleanQuery completely.  situation (c) may also lend itself to that solution, since
semanticly it means "don't allow a match on any queries in the empty set of queries".  ....
I have no idea what the "right" thing to do for situation (a) is.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

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

View raw message