I don't think this test failure proves that the optimization is broken. The other failure is a bit easier to understand so I'll use it as an example, but this one is the same. We have an initial query which is ((((#body:d (+body:b (body:d body:a))^4.0 +body:c body:d)^4.0)^8.0)^3.0)^9.0 and we are trying to check that we get the same scores if we rewrite it or if we don't.
For that particular query, the rewritten form is: ((+body:b (body:d body:a))^4.0 +body:c +body:d)^864.0 The only boolean simplification that happened is that body:d was made a MUST clause since it was both a FILTER and a SHOULD clause. The rest is only about simplifications of nested BoostQueries. The score is different due to the fact that additions are performed in a different order, which is expected with floats. And then the difference is amplified by the fact that this particular query has a high boost. Le ven. 21 oct. 2016 à 11:30, Robert Muir <[email protected]> a écrit : > Personally I think that is not correct to do. Some optimization or > another is broken if scores differ in this way... > > Just because differences are "small" does not make them insignificant. > Think about the tie-break case to users and so on, especially with > smaller documents / less terms / etc. > > Even 1 ulp is gonna mess stuff up, i do not believe leniency in the > tests is the solution. > > > > On Fri, Oct 21, 2016 at 3:05 AM, Adrien Grand <[email protected]> wrote: > > It is the same one as the other day, we need to relax a bit the check on > > scores somehow. > > > > Le ven. 21 oct. 2016 à 08:40, Policeman Jenkins Server < > [email protected]> > > a écrit : > >> > >> Build: https://jenkins.thetaphi.de/job/Lucene-Solr-master-Linux/18103/ > >> Java: 64bit/jdk-9-ea+140 -XX:+UseCompressedOops -XX:+UseParallelGC > >> > >> 1 tests failed. > >> FAILED: org.apache.lucene.search.TestBooleanRewrites.testRandom > >> > >> Error Message: > >> expected:<2048.99267578125> but was:<2048.992919921875> > >> > >> Stack Trace: > >> java.lang.AssertionError: expected:<2048.99267578125> but > >> was:<2048.992919921875> > >> at > >> __randomizedtesting.SeedInfo.seed([DDF676110AA095BA:AFBA531EBBC023C9]:0) > >> at org.junit.Assert.fail(Assert.java:93) > >> at org.junit.Assert.failNotEquals(Assert.java:647) > >> at org.junit.Assert.assertEquals(Assert.java:443) > >> at org.junit.Assert.assertEquals(Assert.java:512) > >> at > >> > org.apache.lucene.search.TestBooleanRewrites.assertEquals(TestBooleanRewrites.java:427) > >> at > >> > org.apache.lucene.search.TestBooleanRewrites.testRandom(TestBooleanRewrites.java:367) > >> at > >> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea > /Native > >> Method) > >> at > >> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea > /NativeMethodAccessorImpl.java:62) > >> at > >> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea > /DelegatingMethodAccessorImpl.java:43) > >> at java.lang.reflect.Method.invoke(java.base@9-ea > /Method.java:535) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1764) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:871) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:907) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:921) > >> at > >> > org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49) > >> at > >> > org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45) > >> at > >> > org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48) > >> at > >> > org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64) > >> at > >> > org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:809) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:460) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:880) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:781) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:816) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:827) > >> at > >> > org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41) > >> at > >> > com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40) > >> at > >> > com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40) > >> 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:53) > >> at > >> > org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47) > >> at > >> > org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64) > >> at > >> > org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367) > >> at java.lang.Thread.run(java.base@9-ea/Thread.java:843) > >> > >> > >> > >> > >> Build Log: > >> [...truncated 1309 lines...] > >> [junit4] Suite: org.apache.lucene.search.TestBooleanRewrites > >> [junit4] 2> NOTE: reproduce with: ant test > >> -Dtestcase=TestBooleanRewrites -Dtests.method=testRandom > >> -Dtests.seed=DDF676110AA095BA -Dtests.multiplier=3 -Dtests.slow=true > >> -Dtests.locale=qu -Dtests.timezone=JST -Dtests.asserts=true > >> -Dtests.file.encoding=UTF-8 > >> [junit4] FAILURE 0.05s J1 | TestBooleanRewrites.testRandom <<< > >> [junit4] > Throwable #1: java.lang.AssertionError: > >> expected:<2048.99267578125> but was:<2048.992919921875> > >> [junit4] > at > >> __randomizedtesting.SeedInfo.seed([DDF676110AA095BA:AFBA531EBBC023C9]:0) > >> [junit4] > at > >> > org.apache.lucene.search.TestBooleanRewrites.assertEquals(TestBooleanRewrites.java:427) > >> [junit4] > at > >> > org.apache.lucene.search.TestBooleanRewrites.testRandom(TestBooleanRewrites.java:367) > >> [junit4] > at > >> jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea > /Native > >> Method) > >> [junit4] > at > >> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea > /NativeMethodAccessorImpl.java:62) > >> [junit4] > at > >> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea > /DelegatingMethodAccessorImpl.java:43) > >> [junit4] > at > >> java.lang.Thread.run(java.base@9-ea/Thread.java:843) > >> [junit4] 2> NOTE: test params are: > >> > codec=FastDecompressionCompressingStoredFields(storedFieldsFormat=CompressingStoredFieldsFormat(compressionMode=FAST_DECOMPRESSION, > >> chunkSize=16269, maxDocsPerChunk=9, blockSize=4), > >> > termVectorsFormat=CompressingTermVectorsFormat(compressionMode=FAST_DECOMPRESSION, > >> chunkSize=16269, blockSize=4)), sim=ClassicSimilarity, locale=qu, > >> timezone=JST > >> [junit4] 2> NOTE: Linux 4.4.0-42-generic amd64/Oracle Corporation > >> 9-ea (64-bit)/cpus=12,threads=1,free=153179392,total=333971456 > >> [junit4] 2> NOTE: All tests run in this JVM: [TestStandardAnalyzer, > >> TestByteBlockPool, TestNumericUtils, Test2BPostingsBytes, > TestSumDocFreq, > >> TestCharTermAttributeImpl, TestByteArrayDataInput, > >> TestLucene50StoredFieldsFormat, TestPhraseQuery, MultiCollectorTest, > >> TestShardSearching, TestQueryRescorer, Test2BBKDPoints, > >> TestIndexReaderClose, TestSpanContainQuery, TestSloppyMath, > >> TestLongPostings, TestSmallFloat, TestTimSorterWorstCase, TestStressNRT, > >> TestMultiDocValues, TestFieldCacheRewriteMethod, > TestSameTokenSamePosition, > >> TestCheckIndex, TestHugeRamFile, TestPagedBytes, TestEarlyTermination, > >> TestTermVectorsWriter, TestDemoParallelLeafReader, > >> TestDocumentsWriterStallControl, TestAutomatonQueryUnicode, > TestOmitNorms, > >> TestIntBlockPool, TestMultiset, TestSearcherManager, TestIndexSearcher, > >> TestIndexWriterDelete, TestLiveFieldValues, > TestScoreCachingWrappingScorer, > >> TestDocument, TestDirectPacked, TestFieldsReader, TestSimpleFSDirectory, > >> TestPayloads, TestAutomaton, FuzzyTermOnShortTermsTest, > >> TestSortedSetSortField, TestSortRandom, TestBooleanQuery, > >> TestIntArrayDocIdSet, TestCharArraySet, TestRadixSelector, > >> TestSleepingLockWrapper, TestTermdocPerf, TestDocsAndPositions, > >> TestNamedSPILoader, TestRecyclingIntBlockAllocator, > TestIndexWriterUnicode, > >> TestStressAdvance, TestFixedLengthBytesRefArray, > TestConsistentFieldNumbers, > >> Test2BDocs, TestMultiFields, TestDocumentsWriterDeleteQueue, > >> TestMutablePointsReaderUtils, TestIndexableField, > >> TestExitableDirectoryReader, TestSortRescorer, TestDuelingCodecs, > >> TestNRTReaderCleanup, TestCharsRef, TestIndexFileDeleter, > >> TestIndexWriterMerging, TestFSTs, TestIndexWriterWithThreads, > TestMultiMMap, > >> TestBasics, TestIndexWriterMergePolicy, TestAtomicUpdate, > >> TestHighCompressionMode, TestTopDocsMerge, TestTieredMergePolicy, > >> TestLevenshteinAutomata, TestByteSlices, TestNRTCachingDirectory, > >> TestParallelCompositeReader, TestIndexWriterNRTIsCurrent, TestCrash, > >> TestSegmentTermDocs, TestPerFieldPostingsFormat2, TestTermsEnum2, > >> TestPostingsOffsets, TestTransactionRollback, TestFlex, > TestStressIndexing2, > >> TestBagOfPostings, TestWildcard, TestSimilarity2, > TestFieldMaskingSpanQuery, > >> TestExternalCodecs, TestNoDeletionPolicy, TestRegexpQuery, > >> TestPerSegmentDeletes, TestSegmentTermEnum, > >> TestComplexExplanationsOfNonMatches, TestPrefixCodedTerms, > >> TestAllFilesHaveCodecHeader, TestTermScorer, TestMultiLevelSkipList, > >> TestSearchForDuplicates, TestCompiledAutomaton, TestElevationComparator, > >> TestSubScorerFreqs, TestConjunctions, TestPositionIncrement, > >> TestSpanExplanationsOfNonMatches, TestSetOnce, TestFilterIterator, > >> TestPriorityQueue, TestAttributeSource, TestBooleanScorer, > TestAssertions, > >> TestTwoPhaseCommitTool, TestIndexWriterOnJRECrash, Test4GBStoredFields, > >> TestNGramPhraseQuery, TestSimpleAttributeImpl, TestIndexCommit, > TestIOUtils, > >> TestNewestSegment, Test2BPagedBytes, TestStopFilter, > >> TestPackedTokenAttributeImpl, TestCodecUtil, > >> TestGrowableByteArrayDataOutput, TestLucene50TermVectorsFormat, > >> TestAllFilesHaveChecksumFooter, TestDuelingCodecsAtNight, > >> TestFilterDirectoryReader, TestIndexWriterMaxDocs, > TestIndexWriterOnVMError, > >> TestIndexWriterOutOfFileDescriptors, TestInfoStream, TestManyFields, > >> TestMaxPosition, TestMergePolicyWrapper, TestMergeRateLimiter, > >> TestMultiTermsEnum, TestNumericDocValuesUpdates, TestOrdinalMap, > >> TestPointValues, TestReadOnlyIndex, TestReaderWrapperDVTypeCheck, > >> TestSegmentInfos, TestSwappedIndexFiles, TestTermVectors, TestTerms, > >> TestTragicIndexWriterDeadlock, TestTryDelete, TestBlendedTermQuery, > >> TestBooleanRewrites] > >> [junit4] Completed [340/434 (1!)] on J1 in 0.06s, 10 tests, 1 failure > >> <<< FAILURES! > >> > >> [...truncated 61242 lines...] > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
