Class BaseSimilarityTestCase


  • public abstract class BaseSimilarityTestCase
    extends LuceneTestCase
    Abstract class to do basic tests for a similarity. NOTE: This test focuses on the similarity impl, nothing else. The [stretch] goal is for this test to be so thorough in testing a new Similarity that if this test passes, then all Lucene/Solr tests should also pass. Ie, if there is some bug in a given Similarity that this test fails to catch then this test needs to be improved!
    • Constructor Detail

      • BaseSimilarityTestCase

        public BaseSimilarityTestCase()
    • Method Detail

      • getSimilarity

        protected abstract Similarity getSimilarity​(Random random)
        Return a new similarity with all parameters randomized within valid ranges.
      • testRandomScoring

        public void testRandomScoring()
                               throws Exception
        Tests scoring across a bunch of random terms/corpora/frequencies for each possible document length. It does the following checks:
        • scores are non-negative and finite.
        • score matches the explanation exactly.
        • internal explanations calculations are sane (e.g. sum of: and so on actually compute sums)
        • scores don't decrease as term frequencies increase: e.g. score(freq=N + 1) >= score(freq=N)
        • scores don't decrease as documents get shorter, e.g. score(len=M) >= score(len=M+1)
        • scores don't decrease as terms get rarer, e.g. score(term=N) >= score(term=N+1)
        • scoring works for floating point frequencies (e.g. sloppy phrase and span queries will work)
        • scoring works for reasonably large 64-bit statistic values (e.g. distributed search will work)
        • scoring works for reasonably large boost values (0 .. Integer.MAX_VALUE, e.g. query boosts will work)
        • scoring works for parameters randomized within valid ranges (see getSimilarity(Random))
        Throws:
        Exception