Class CheckHits


  • public class CheckHits
    extends Object
    Utility class for asserting expected hits in tests.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  CheckHits.ExplanationAsserter
      Asserts that the score explanation for every document matching a query corresponds with the true score.
      static class  CheckHits.ExplanationAssertingSearcher
      an IndexSearcher that implicitly checks hte explanation of every match whenever it executes a search.
      static class  CheckHits.SetCollector
      Just collects document ids into a set.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static float EXPLAIN_SCORE_TOLERANCE_DELTA
      Some explains methods calculate their values though a slightly different order of operations from the actual scoring method ...
    • Constructor Summary

      Constructors 
      Constructor Description
      CheckHits()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void checkDocIds​(String mes, int[] results, org.apache.lucene.search.ScoreDoc[] hits)
      Tests that a Hits has an expected order of documents
      static void checkEqual​(org.apache.lucene.search.Query query, org.apache.lucene.search.ScoreDoc[] hits1, org.apache.lucene.search.ScoreDoc[] hits2)  
      static void checkExplanations​(org.apache.lucene.search.Query query, String defaultFieldName, org.apache.lucene.search.Searcher searcher)
      Asserts that the explanation value for every document matching a query corresponds with the true score.
      static void checkExplanations​(org.apache.lucene.search.Query query, String defaultFieldName, org.apache.lucene.search.Searcher searcher, boolean deep)
      Asserts that the explanation value for every document matching a query corresponds with the true score.
      static void checkHitCollector​(Random random, org.apache.lucene.search.Query query, String defaultFieldName, org.apache.lucene.search.Searcher searcher, int[] results)
      Tests that a query matches the an expected set of documents using a HitCollector.
      static void checkHits​(Random random, org.apache.lucene.search.Query query, String defaultFieldName, org.apache.lucene.search.Searcher searcher, int[] results)
      Tests that a query matches the an expected set of documents using Hits.
      static void checkHitsQuery​(org.apache.lucene.search.Query query, org.apache.lucene.search.ScoreDoc[] hits1, org.apache.lucene.search.ScoreDoc[] hits2, int[] results)
      Tests that two queries have an expected order of documents, and that the two queries have the same score values.
      static void checkNoMatchExplanations​(org.apache.lucene.search.Query q, String defaultFieldName, org.apache.lucene.search.Searcher searcher, int[] results)
      Tests that all documents up to maxDoc which are *not* in the expected result set, have an explanation which indicates that the document does not match
      static String hits2str​(org.apache.lucene.search.ScoreDoc[] hits1, org.apache.lucene.search.ScoreDoc[] hits2, int start, int end)  
      static String topdocsString​(org.apache.lucene.search.TopDocs docs, int start, int end)  
      static void verifyExplanation​(String q, int doc, float score, boolean deep, org.apache.lucene.search.Explanation expl)
      Assert that an explanation has the expected score, and optionally that its sub-details max/sum/factor match to that score.
    • Field Detail

      • EXPLAIN_SCORE_TOLERANCE_DELTA

        public static float EXPLAIN_SCORE_TOLERANCE_DELTA
        Some explains methods calculate their values though a slightly different order of operations from the actual scoring method ... this allows for a small amount of variation
    • Constructor Detail

      • CheckHits

        public CheckHits()
    • Method Detail

      • checkNoMatchExplanations

        public static void checkNoMatchExplanations​(org.apache.lucene.search.Query q,
                                                    String defaultFieldName,
                                                    org.apache.lucene.search.Searcher searcher,
                                                    int[] results)
                                             throws IOException
        Tests that all documents up to maxDoc which are *not* in the expected result set, have an explanation which indicates that the document does not match
        Throws:
        IOException
      • checkHitCollector

        public static void checkHitCollector​(Random random,
                                             org.apache.lucene.search.Query query,
                                             String defaultFieldName,
                                             org.apache.lucene.search.Searcher searcher,
                                             int[] results)
                                      throws IOException
        Tests that a query matches the an expected set of documents using a HitCollector.

        Note that when using the HitCollector API, documents will be collected if they "match" regardless of what their score is.

        Parameters:
        query - the query to test
        searcher - the searcher to test the query against
        defaultFieldName - used for displaying the query in assertion messages
        results - a list of documentIds that must match the query
        Throws:
        IOException
        See Also:
        checkHits(java.util.Random, org.apache.lucene.search.Query, java.lang.String, org.apache.lucene.search.Searcher, int[])
      • checkDocIds

        public static void checkDocIds​(String mes,
                                       int[] results,
                                       org.apache.lucene.search.ScoreDoc[] hits)
                                throws IOException
        Tests that a Hits has an expected order of documents
        Throws:
        IOException
      • checkHitsQuery

        public static void checkHitsQuery​(org.apache.lucene.search.Query query,
                                          org.apache.lucene.search.ScoreDoc[] hits1,
                                          org.apache.lucene.search.ScoreDoc[] hits2,
                                          int[] results)
                                   throws IOException
        Tests that two queries have an expected order of documents, and that the two queries have the same score values.
        Throws:
        IOException
      • checkEqual

        public static void checkEqual​(org.apache.lucene.search.Query query,
                                      org.apache.lucene.search.ScoreDoc[] hits1,
                                      org.apache.lucene.search.ScoreDoc[] hits2)
                               throws IOException
        Throws:
        IOException
      • hits2str

        public static String hits2str​(org.apache.lucene.search.ScoreDoc[] hits1,
                                      org.apache.lucene.search.ScoreDoc[] hits2,
                                      int start,
                                      int end)
                               throws IOException
        Throws:
        IOException
      • topdocsString

        public static String topdocsString​(org.apache.lucene.search.TopDocs docs,
                                           int start,
                                           int end)
      • checkExplanations

        public static void checkExplanations​(org.apache.lucene.search.Query query,
                                             String defaultFieldName,
                                             org.apache.lucene.search.Searcher searcher)
                                      throws IOException
        Asserts that the explanation value for every document matching a query corresponds with the true score.
        Parameters:
        query - the query to test
        searcher - the searcher to test the query against
        defaultFieldName - used for displaing the query in assertion messages
        Throws:
        IOException
        See Also:
        CheckHits.ExplanationAsserter, for a "deep" testing of the explanation details.
      • checkExplanations

        public static void checkExplanations​(org.apache.lucene.search.Query query,
                                             String defaultFieldName,
                                             org.apache.lucene.search.Searcher searcher,
                                             boolean deep)
                                      throws IOException
        Asserts that the explanation value for every document matching a query corresponds with the true score. Optionally does "deep" testing of the explanation details.
        Parameters:
        query - the query to test
        searcher - the searcher to test the query against
        defaultFieldName - used for displaing the query in assertion messages
        deep - indicates whether a deep comparison of sub-Explanation details should be executed
        Throws:
        IOException
        See Also:
        CheckHits.ExplanationAsserter
      • verifyExplanation

        public static void verifyExplanation​(String q,
                                             int doc,
                                             float score,
                                             boolean deep,
                                             org.apache.lucene.search.Explanation expl)
        Assert that an explanation has the expected score, and optionally that its sub-details max/sum/factor match to that score.
        Parameters:
        q - String representation of the query for assertion messages
        doc - Document ID for assertion messages
        score - Real score value of doc with query q
        deep - indicates whether a deep comparison of sub-Explanation details should be executed
        expl - The Explanation to match against score