[ https://issues.apache.org/jira/browse/LUCENE-5873?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14231276#comment-14231276 ]
Adrien Grand commented on LUCENE-5873: -------------------------------------- But isn't it relying too much on the way that intersections with filters are implemented? For instance if we suddenly replace the initial advance after a match to use advance(docId() + 1) instead if nextDoc() then it would fail for this query? This example is a bit trivial, but I believe similar things could happen if we start having more sophisticated intersections with filters (and eg. decide to split the filter in two, first intersect with the fast part of the filter and then only use the (slow) 2nd part of the filter to "confirm" matches). bq. What it needs to return? Why can't it return the first child from the next block that the parent scorer matches? It is already something that can happen if you advance to the last child of a block that happens to not match the {{acceptDocs}}. I think it's also a bit confusing that this query can be used alone on its own (nextDoc works fine and will make sure to skip parent documents), but if you want to filter it then the filter needs to match child docs only? > AssertionError in ToChildBlockJoinScorer.advance > ------------------------------------------------ > > Key: LUCENE-5873 > URL: https://issues.apache.org/jira/browse/LUCENE-5873 > Project: Lucene - Core > Issue Type: Bug > Reporter: Varun Thacker > Priority: Minor > Attachments: LUCENE-5873.patch, LUCENE-5873.patch > > > When using ToChildBJQ and searching via IndexSearcher.search(Query query, > Filter filter, int n) if we provide a filter which matches both parent and > child documents we get this error > {noformat} > java.lang.AssertionError > at > __randomizedtesting.SeedInfo.seed([C346722DC1E4810C:A08F176AE828FA1D]:0) > at > org.apache.lucene.search.join.ToChildBlockJoinQuery$ToChildBlockJoinScorer.advance(ToChildBlockJoinQuery.java:286) > at > org.apache.lucene.search.FilteredQuery$LeapFrogScorer.advanceToNextCommonDoc(FilteredQuery.java:274) > at > org.apache.lucene.search.FilteredQuery$LeapFrogScorer.nextDoc(FilteredQuery.java:286) > at > org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:192) > at > org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163) > at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35) > at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:614) > at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:483) > at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:440) > at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:273) > at > org.apache.lucene.search.join.TestBlockJoinValidation.testValidationForToChildBjqWithChildFilterQuery(TestBlockJoinValidation.java:124) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at > com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1618) > at > com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:827) > at > com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:863) > at > com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:877) > at > org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:110) > at > org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:50) > at > org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:46) > at > com.carrotsearch.randomizedtesting.rules.SystemPropertiesInvariantRule$1.evaluate(SystemPropertiesInvariantRule.java:55) > at > org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:49) > at > org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:65) > at > org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48) > at > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > at > com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:365) > at > com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:798) > at > com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:458) > at > com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:836) > at > com.carrotsearch.randomizedtesting.RandomizedRunner$3.evaluate(RandomizedRunner.java:738) > at > com.carrotsearch.randomizedtesting.RandomizedRunner$4.evaluate(RandomizedRunner.java:772) > at > com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:783) > at > org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:46) > at > org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:42) > at > com.carrotsearch.randomizedtesting.rules.SystemPropertiesInvariantRule$1.evaluate(SystemPropertiesInvariantRule.java:55) > at > com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39) > at > com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39) > at > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > at > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > at > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > at > org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:43) > at > org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48) > at > org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:65) > at > org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:55) > at > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > at > com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:365) > at java.lang.Thread.run(Thread.java:745) > {noformat} > This was caught by test failures recored in SOLR-6295 . The reason why we > send a filter is if the user would like to limit the child documents being > matched. -- 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