public virtual void TestAndOrs() { IndexSearcher searcher = NewSearcher(reader); // test (a/1 OR a/2) AND b/1 DrillDownQuery q = new DrillDownQuery(config); q.Add("a", "1"); q.Add("a", "2"); q.Add("b", "1"); TopDocs docs = searcher.Search(q, 100); Assert.AreEqual(5, docs.TotalHits); }
public virtual void TestScoring() { // verify that drill-down queries do not modify scores IndexSearcher searcher = NewSearcher(reader); float[] scores = new float[reader.MaxDoc]; Query q = new TermQuery(new Term("content", "foo")); TopDocs docs = searcher.Search(q, reader.MaxDoc); // fetch all available docs to this query foreach (ScoreDoc sd in docs.ScoreDocs) { scores[sd.Doc] = sd.Score; } // create a drill-down query with category "a", scores should not change DrillDownQuery q2 = new DrillDownQuery(config, q); q2.Add("a"); docs = searcher.Search(q2, reader.MaxDoc); // fetch all available docs to this query foreach (ScoreDoc sd in docs.ScoreDocs) { Assert.AreEqual(scores[sd.Doc], sd.Score, 0f, "score of doc=" + sd.Doc + " modified"); } }
public virtual void TestQueryImplicitDefaultParams() { IndexSearcher searcher = NewSearcher(reader); // Create the base query to start with DrillDownQuery q = new DrillDownQuery(config); q.Add("a"); // Making sure the query yields 5 documents with the facet "b" and the // previous (facet "a") query as a base query DrillDownQuery q2 = new DrillDownQuery(config, q); q2.Add("b"); TopDocs docs = searcher.Search(q2, 100); Assert.AreEqual(5, docs.TotalHits); // Check that content:foo (which yields 50% results) and facet/b (which yields 20%) // would gather together 10 results (10%..) Query fooQuery = new TermQuery(new Term("content", "foo")); DrillDownQuery q4 = new DrillDownQuery(config, fooQuery); q4.Add("b"); docs = searcher.Search(q4, 100); Assert.AreEqual(10, docs.TotalHits); }
public virtual void TestClone() { var q = new DrillDownQuery(config, new MatchAllDocsQuery()); q.Add("a"); var clone = q.Clone() as DrillDownQuery; Assert.NotNull(clone); clone.Add("b"); Assert.False(q.ToString().Equals(clone.ToString(), StringComparison.Ordinal), "query wasn't cloned: source=" + q + " clone=" + clone); }
public virtual void TestScoringNoBaseQuery() { // verify that drill-down queries (with no base query) returns 0.0 score IndexSearcher searcher = NewSearcher(reader); DrillDownQuery q = new DrillDownQuery(config); q.Add("a"); TopDocs docs = searcher.Search(q, reader.MaxDoc); // fetch all available docs to this query foreach (ScoreDoc sd in docs.ScoreDocs) { Assert.AreEqual(0f, sd.Score, 0f); } }
public virtual void TestClone() { var q = new DrillDownQuery(config, new MatchAllDocsQuery()); q.Add("a"); var clone = q.Clone() as DrillDownQuery; Assert.NotNull(clone); clone.Add("b"); Assert.False(q.ToString().Equals(clone.ToString()), "query wasn't cloned: source=" + q + " clone=" + clone); }