[ 
https://issues.apache.org/jira/browse/LUCENE-6889?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14998891#comment-14998891
 ] 

Terry Smith commented on LUCENE-6889:
-------------------------------------

Ah, that makes sense. I didn't realize the first scenario was dropping the MUST 
when the FILTER and MUST wrapped identical clauses or that the second scenario 
also included boost handling to avoid the scoring issue. Given that, this 
sounds like a great optimization.

I'll summarize the rules below, mind shouting out if I still misunderstand?

Rule 1
{noformat}
#a +a -> +a
{noformat}

 Rule 2
{noformat}
+*:*^b #f -> ConstantScoreQuery(f)^b
{noformat}

Rule 3
{noformat}
-a +a -> MatchNoDocsQuery
-a #a -> MatchNoDocsQuery
{noformat}






> BooleanQuery.rewrite could easily optimize some simple cases
> ------------------------------------------------------------
>
>                 Key: LUCENE-6889
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6889
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Adrien Grand
>            Priority: Minor
>
> Follow-up of SOLR-8251: APIs and user interfaces sometimes encourage to write 
> BooleanQuery instances that are not optimal, for instance a typical case that 
> happens often with Solr/Elasticsearch is to send a request that has a 
> MatchAllDocsQuery as a query and some filter, which could be executed more 
> efficiently by directly wrapping the filter into a ConstantScoreQuery.
> Here are some ideas of rewrite operations that BooleanQuery could perform:
>  - remove FILTER clauses when they are also a MUST clause
>  - rewrite queries of the form "+*:* #filter" to a ConstantScoreQuery(filter)
>  - rewrite to a MatchNoDocsQuery when a clause that is a MUST or FILTER 
> clause is also a MUST_NOT clause



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to