Enable MultiTermQuery's constant score mode to also use BooleanQuery under the hood -----------------------------------------------------------------------------------
Key: LUCENE-1644 URL: https://issues.apache.org/jira/browse/LUCENE-1644 Project: Lucene - Java Issue Type: Improvement Components: Search Reporter: Michael McCandless Priority: Minor Fix For: 2.9 When MultiTermQuery is used (via one of its subclasses, eg WildcardQuery, PrefixQuery, FuzzyQuery, etc.), you can ask it to use "constant score mode", which pre-builds a filter and then wraps that filter as a ConstantScoreQuery. If you don't set that, it instead builds a [potentially massive] BooleanQuery with one SHOULD clause per term. There are some limitations of this approach: * The scores returned by the BooleanQuery are often quite meaningless to the app, so, one should be able to use a BooleanQuery yet get constant scores back. (Though I vaguely remember at least one example someone raised where the scores were useful...). * The resulting BooleanQuery can easily have too many clauses, throwing an extremely confusing exception to newish users. * It'd be better to have the freedom to pick "build filter up front" vs "build massive BooleanQuery", when constant scoring is enabled, because they have different performance tradeoffs. * In constant score mode, an OpenBitSet is always used, yet for sparse bit sets this does not give good performance. I think we could address these issues by giving BooleanQuery a constant score mode, then empower MultiTermQuery (when in constant score mode) to pick & choose whether to use BooleanQuery vs up-front filter, and finally empower MultiTermQuery to pick the best (sparse vs dense) bit set impl. -- 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: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org