Exemplo n.º 1
0
        public virtual void TestNoPayload()
        {
            PayloadTermQuery q1    = new PayloadTermQuery(new Term(PayloadHelper.NO_PAYLOAD_FIELD, "zero"), new MaxPayloadFunction());
            PayloadTermQuery q2    = new PayloadTermQuery(new Term(PayloadHelper.NO_PAYLOAD_FIELD, "foo"), new MaxPayloadFunction());
            BooleanClause    c1    = new BooleanClause(q1, Occur.MUST);
            BooleanClause    c2    = new BooleanClause(q2, Occur.MUST_NOT);
            BooleanQuery     query = new BooleanQuery();

            query.Add(c1);
            query.Add(c2);
            TopDocs hits = Searcher.Search(query, null, 100);

            Assert.IsTrue(hits != null, "hits is null and it shouldn't be");
            Assert.IsTrue(hits.TotalHits == 1, "hits Size: " + hits.TotalHits + " is not: " + 1);
            int[] results = new int[1];
            results[0] = 0; //hits.ScoreDocs[0].Doc;
            CheckHits.CheckHitCollector(Random, query, PayloadHelper.NO_PAYLOAD_FIELD, Searcher, results, Similarity);
        }
Exemplo n.º 2
0
        public virtual void TestSortValues()
        {
            var            expr     = JavascriptCompiler.Compile("sqrt(_score)");
            SimpleBindings bindings = new SimpleBindings();

            bindings.Add(new SortField("_score", SortFieldType.SCORE));
            Sort         sort  = new Sort(expr.GetSortField(bindings, true));
            Query        query = new TermQuery(new Term("body", "contents"));
            TopFieldDocs td    = searcher.Search(query, null, 3, sort, true, true);

            for (int i = 0; i < 3; i++)
            {
                FieldDoc d        = (FieldDoc)td.ScoreDocs[i];
                float    expected = (float)Math.Sqrt(d.Score);
                float    actual   = (float)((double)d.Fields[0]);
                Assert.AreEqual(expected, actual, CheckHits.ExplainToleranceDelta(expected, actual));
            }
        }
Exemplo n.º 3
0
        private void AssertHits(Query q, float[] scores)
        {
            ScoreDoc[] expected     = new ScoreDoc[scores.Length];
            int[]      expectedDocs = new int[scores.Length];
            for (int i = 0; i < expected.Length; i++)
            {
                expectedDocs[i] = i;
                expected[i]     = new ScoreDoc(i, scores[i]);
            }
            TopDocs docs = searcher.Search(q, null, documents.Count, new Sort(new SortField("id", SortFieldType.STRING)), true, false);

            CheckHits.DoCheckHits(
#if FEATURE_INSTANCE_TESTDATA_INITIALIZATION
                this,
#endif
                Random, q, "", searcher, expectedDocs);
            CheckHits.CheckHitsQuery(q, expected, docs.ScoreDocs, expectedDocs);
            CheckHits.CheckExplanations(q, "", searcher);
        }
Exemplo n.º 4
0
        public virtual void TestExpressionRefersToExpression()
        {
            var expr1    = JavascriptCompiler.Compile("_score");
            var expr2    = JavascriptCompiler.Compile("2*expr1");
            var bindings = new SimpleBindings();

            bindings.Add(new SortField("_score", SortFieldType.SCORE));
            bindings.Add("expr1", expr1);
            Sort         sort  = new Sort(expr2.GetSortField(bindings, true));
            Query        query = new TermQuery(new Term("body", "contents"));
            TopFieldDocs td    = searcher.Search(query, null, 3, sort, true, true);

            for (int i = 0; i < 3; i++)
            {
                FieldDoc d        = (FieldDoc)td.ScoreDocs[i];
                float    expected = 2 * d.Score;
                float    actual   = (float)((double)d.Fields[0]);
                AreEqual(expected, actual, CheckHits.ExplainToleranceDelta
                             (expected, actual));
            }
        }
Exemplo n.º 5
0
        protected virtual void AssertHits(Query q, float[] scores)
        {
            ScoreDoc[] expected     = new ScoreDoc[scores.Length];
            int[]      expectedDocs = new int[scores.Length];
            for (int i = 0; i < expected.Length; i++)
            {
                expectedDocs[i] = i;
                expected[i]     = new ScoreDoc(i, scores[i]);
            }
            TopDocs docs = searcher.Search(q, 2, new Sort(new SortField("id", SortFieldType.STRING)));

            /*
             * for (int i=0;i<docs.scoreDocs.length;i++) {
             * System.out.println(searcher.explain(q, docs.scoreDocs[i].doc));
             * }
             */

            CheckHits.DoCheckHits(Random(), q, "", searcher, expectedDocs, Similarity);
            CheckHits.CheckHitsQuery(q, expected, docs.ScoreDocs, expectedDocs);
            CheckHits.CheckExplanations(q, "", searcher);
        }
Exemplo n.º 6
0
        /** scores[] are in docId order */
        protected virtual void CheckValueSource(ValueSource vs, float[] scores, float delta)
        {
            FunctionQuery q = new FunctionQuery(vs);

            //    //TODO is there any point to this check?
            //    int expectedDocs[] = new int[scores.length];//fill with ascending 0....length-1
            //    for (int i = 0; i < expectedDocs.length; i++) {
            //      expectedDocs[i] = i;
            //    }
            //    CheckHits.checkHits(Random, q, "", indexSearcher, expectedDocs);

            TopDocs docs = indexSearcher.Search(q, 1000);//calculates the score
            for (int i = 0; i < docs.ScoreDocs.Length; i++)
            {
                ScoreDoc gotSD = docs.ScoreDocs[i];
                float expectedScore = scores[gotSD.Doc];
                assertEquals("Not equal for doc " + gotSD.Doc, expectedScore, gotSD.Score, delta);
            }

            CheckHits.CheckExplanations(q, "", indexSearcher);
        }
Exemplo n.º 7
0
        internal virtual void AssertQuery(Query query, Filter filter, Sort sort)
        {
            int     size     = TestUtil.NextInt(Random(), 1, searcher.IndexReader.MaxDoc / 5);
            TopDocs expected = searcher.Search(query, filter, size, sort, Random().NextBoolean
                                                   (), Random().NextBoolean());

            // make our actual sort, mutating original by replacing some of the
            // sortfields with equivalent expressions
            SortField[] original = sort.GetSort();
            SortField[] mutated  = new SortField[original.Length];
            for (int i = 0; i < mutated.Length; i++)
            {
                if (Random().Next(3) > 0)
                {
                    SortField      s              = original[i];
                    Expression     expr           = JavascriptCompiler.Compile(s.Field);
                    SimpleBindings simpleBindings = new SimpleBindings();
                    simpleBindings.Add(s);
                    bool reverse = s.Type == SortField.Type_e.SCORE || s.Reverse;
                    mutated[i] = expr.GetSortField(simpleBindings, reverse);
                }
                else
                {
                    mutated[i] = original[i];
                }
            }
            Sort    mutatedSort = new Sort(mutated);
            TopDocs actual      = searcher.Search(query, filter, size, mutatedSort, Random().NextBoolean
                                                      (), Random().NextBoolean());

            CheckHits.CheckEqual(query, expected.ScoreDocs, actual.ScoreDocs);
            if (size < actual.TotalHits)
            {
                expected = searcher.SearchAfter(expected.ScoreDocs[size - 1], query, filter, size
                                                , sort);
                actual = searcher.SearchAfter(actual.ScoreDocs[size - 1], query, filter, size, mutatedSort
                                              );
                CheckHits.CheckEqual(query, expected.ScoreDocs, actual.ScoreDocs);
            }
        }
Exemplo n.º 8
0
        public virtual void TestFiniteVersusInfinite()
        {
            for (int i = 0; i < numIterations; i++)
            {
                string           reg          = AutomatonTestUtil.RandomRegexp(Random);
                Automaton        automaton    = (new RegExp(reg, RegExpSyntax.NONE)).ToAutomaton();
                IList <BytesRef> matchedTerms = new List <BytesRef>();
                foreach (BytesRef t in terms)
                {
                    if (BasicOperations.Run(automaton, t.Utf8ToString()))
                    {
                        matchedTerms.Add(t);
                    }
                }

                Automaton alternate = BasicAutomata.MakeStringUnion(matchedTerms);
                //System.out.println("match " + matchedTerms.Size() + " " + alternate.getNumberOfStates() + " states, sigma=" + alternate.getStartPoints().length);
                //AutomatonTestUtil.minimizeSimple(alternate);
                //System.out.println("minmize done");
                AutomatonQuery a1 = new AutomatonQuery(new Term("field", ""), automaton);
                AutomatonQuery a2 = new AutomatonQuery(new Term("field", ""), alternate);
                CheckHits.CheckEqual(a1, searcher.Search(a1, 25).ScoreDocs, searcher.Search(a2, 25).ScoreDocs);
            }
        }
 protected internal virtual void Check(SpanQuery q, int[] docs)
 {
     CheckHits.CheckHitCollector(Random, q, null, Searcher, docs, Similarity);
 }
Exemplo n.º 10
0
        public virtual void TestSpanNearQuery()
        {
            SpanNearQuery q = MakeQuery();

            CheckHits.DoCheckHits(Random(), q, FIELD, Searcher, new int[] { 0, 1 }, Similarity);
        }
Exemplo n.º 11
0
        // verify results are as expected.
        private void VerifyResults(float boost, IndexSearcher s, IDictionary <int, float> h1, IDictionary <int, float> h2customNeutral, IDictionary <int, float> h3CustomMul, IDictionary <int, float> h4CustomAdd, IDictionary <int, float> h5CustomMulAdd, Query q1, Query q2, Query q3, Query q4, Query q5)
        {
            // verify numbers of matches
            Log("#hits = " + h1.Count);
            assertEquals("queries should have same #hits", h1.Count, h2customNeutral.Count);
            assertEquals("queries should have same #hits", h1.Count, h3CustomMul.Count);
            assertEquals("queries should have same #hits", h1.Count, h4CustomAdd.Count);
            assertEquals("queries should have same #hits", h1.Count, h5CustomMulAdd.Count);

            QueryUtils.Check(Random(), q1, s, Rarely(), Similarity);
            QueryUtils.Check(Random(), q2, s, Rarely(), Similarity);
            QueryUtils.Check(Random(), q3, s, Rarely(), Similarity);
            QueryUtils.Check(Random(), q4, s, Rarely(), Similarity);
            QueryUtils.Check(Random(), q5, s, Rarely(), Similarity);

            // verify scores ratios
            foreach (int doc in h1.Keys)
            {
                Log("doc = " + doc);

                float fieldScore = ExpectedFieldScore(s.IndexReader.Document(doc).Get(ID_FIELD));
                Log("fieldScore = " + fieldScore);
                assertTrue("fieldScore should not be 0", fieldScore > 0);

                float score1 = h1[doc];
                LogResult("score1=", s, q1, doc, score1);

                float score2 = h2customNeutral[doc];
                LogResult("score2=", s, q2, doc, score2);
                assertEquals("same score (just boosted) for neutral", boost * score1, score2, CheckHits.ExplainToleranceDelta(boost * score1, score2));

                float score3 = h3CustomMul[doc];
                LogResult("score3=", s, q3, doc, score3);
                assertEquals("new score for custom mul", boost * fieldScore * score1, score3, CheckHits.ExplainToleranceDelta(boost * fieldScore * score1, score3));

                float score4 = h4CustomAdd[doc];
                LogResult("score4=", s, q4, doc, score4);
                assertEquals("new score for custom add", boost * (fieldScore + score1), score4, CheckHits.ExplainToleranceDelta(boost * (fieldScore + score1), score4));

                float score5 = h5CustomMulAdd[doc];
                LogResult("score5=", s, q5, doc, score5);
                assertEquals("new score for custom mul add", boost * fieldScore * (score1 + fieldScore), score5, CheckHits.ExplainToleranceDelta(boost * fieldScore * (score1 + fieldScore), score5));
            }
        }
Exemplo n.º 12
0
 /// <summary>
 /// Overrides superclass to ignore matches and focus on non-matches
 /// </summary>
 /// <seealso> cref= CheckHits#checkNoMatchExplanations </seealso>
 public override void Qtest(Query q, int[] expDocNrs)
 {
     CheckHits.CheckNoMatchExplanations(q, FIELD, Searcher, expDocNrs);
 }
 protected internal virtual void  Check(SpanQuery q, int[] docs)
 {
     CheckHits.CheckHitCollector(q, null, searcher, docs);
 }
Exemplo n.º 14
0
        public virtual void TestSpanNearQuery()
        {
            SpanNearQuery q = MakeQuery();

            CheckHits.DoCheckHits(Random, q, FIELD, searcher, new int[] { 0, 1 });
        }