Ferenczi Jim created LUCENE-7337: ------------------------------------ Summary: MultiTermQuery are sometimes rewritten into an empty boolean query Key: LUCENE-7337 URL: https://issues.apache.org/jira/browse/LUCENE-7337 Project: Lucene - Core Issue Type: Bug Components: core/search Reporter: Ferenczi Jim Priority: Minor
MultiTermQuery are sometimes rewritten to an empty boolean query (depending on the rewrite method), it can happen when no expansions are found on a fuzzy query for instance. It can be problematic when the multi term query is boosted. For instance consider the following query: `((title:bar~1)^100 text:bar)` This is a boolean query with two optional clauses. The first one is a fuzzy query on the field title with a boost of 100. If there is no expansion for "title:bar~1" the query is rewritten into: `(()^100 text:bar)` ... and when expansions are found: `((title:bars | title:bar)^100 text:bar)` The scoring of those two queries will differ because the normalization factor and the norm for the first query will be equal to 1 (the boost is ignored because the empty boolean query is not taken into account for the computation of the normalization factor) whereas the second query will have a normalization factor of 10,000 (100*100) and a norm equal to 0.01. This kind of discrepancy can happen in a single index because the expansions for the fuzzy query are done at the segment level. It can also happen when multiple indices are requested (Solr/ElasticSearch case). A simple fix would be to replace the empty boolean query produced by the multi term query with a MatchNoDocsQuery but I am not sure that it's the best way to fix. WDYT ? -- 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