[ https://issues.apache.org/jira/browse/LUCENE-6889?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14998808#comment-14998808 ]
Terry Smith commented on LUCENE-6889: ------------------------------------- I like the last one but believe that the other two aren't correct. bq. remove FILTER clauses when they are also a MUST clause Seeing as a FILTER is a non scoring MUST this just doesn't sound right. The FILTER could constrain the result set more than just the MUST alone. e.g. +foo #(+foo +bar) bq. rewrite queries of the form +*:* #filter" to a ConstantScoreQuery(filter) I don't think you can drop a +:*:* without affecting the score, but you could drop a #*:* if the BooleanQuery has something else to force inclusion (other MUST, FILTER or some SHOULD with an appropriate minNumShouldMatch). For this case could Solr/ElasticSearch add the MatchAllDocs as a FILTER instead of a MUST to allow for this optimization? We could detect duplicate FILTER and MUST_NOT clauses as described in LUCENE-6787. Jira is turning star colon star (*:*) to a bold colon, so apologies if this doesn't read well through the web interface. > 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