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

Michael McCandless commented on LUCENE-1644:
--------------------------------------------

bq. I would change this to simply always throw UOE on any change in 
ConstantScoreRangeQuery.

OK will do.

bq. A good thing would also be to set the mode to filter automatically, if 
precisionStep >6 for longs (valSize=64) and precStep > 8 for ints (valSize=32), 
because here the number of terms is often too big.

Will do.

Hmm -- my last patch hit this test failure, after I had switched to 
CONSTANT_SCORE_AUTO for NumericRangeQuery:
{code}
    [junit] NOTE: random seed of testcase 
'testRandomTrieAndClassicRangeQuery_NoTrie' was: -2919237198484373178
    [junit] ------------- ---------------- ---------------
    [junit] Testcase: 
testRandomTrieAndClassicRangeQuery_NoTrie(org.apache.lucene.search.TestNumericRangeQuery32):
      FAILED
    [junit] Total number of terms should be equal for unlimited precStep 
expected:<668552> but was:<668584>
    [junit] junit.framework.AssertionFailedError: Total number of terms should 
be equal for unlimited precStep expected:<668552> but was:<668584>
    [junit]     at 
org.apache.lucene.search.TestNumericRangeQuery32.testRandomTrieAndClassicRangeQuery(TestNumericRangeQuery32.java:266)
    [junit]     at 
org.apache.lucene.search.TestNumericRangeQuery32.testRandomTrieAndClassicRangeQuery_NoTrie(TestNumericRangeQuery32.java:287)
    [junit]     at 
org.apache.lucene.util.LuceneTestCase.runTest(LuceneTestCase.java:88)
    [junit] 
{code}
I haven't dug into it yet...

> 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
>            Assignee: Michael McCandless
>            Priority: Minor
>             Fix For: 2.9
>
>         Attachments: LUCENE-1644.patch, LUCENE-1644.patch, LUCENE-1644.patch, 
> LUCENE-1644.patch, LUCENE-1644.patch
>
>
> 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

Reply via email to