public virtual void TestFilteredQuery_Renamed() { Query filteredquery = new FilteredQuery(query, filter); ScoreDoc[] hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(1, hits[0].doc); QueryUtils.Check(filteredquery, searcher); hits = searcher.Search(filteredquery, null, 1000, new Sort("sorter")).scoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(1, hits[0].doc); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "one")), filter); hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check(filteredquery, searcher); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "x")), filter); hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(3, hits[0].doc); QueryUtils.Check(filteredquery, searcher); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "y")), filter); hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(0, hits.Length); QueryUtils.Check(filteredquery, searcher); // test boost Filter f = NewStaticFilterA(); float boost = 2.5f; BooleanQuery bq1 = new BooleanQuery(); TermQuery tq = new TermQuery(new Term("field", "one")); tq.SetBoost(boost); bq1.Add(tq, Occur.MUST); bq1.Add(new TermQuery(new Term("field", "five")), Occur.MUST); BooleanQuery bq2 = new BooleanQuery(); tq = new TermQuery(new Term("field", "one")); filteredquery = new FilteredQuery(tq, f); filteredquery.SetBoost(boost); bq2.Add(filteredquery, Occur.MUST); bq2.Add(new TermQuery(new Term("field", "five")), Occur.MUST); AssertScoreEquals(bq1, bq2); Assert.AreEqual(boost, filteredquery.GetBoost(), 0); Assert.AreEqual(1.0f, tq.GetBoost(), 0); // the boost value of the underlying query shouldn't have changed }
/// <summary>Returns true iff <code>o</code> is equal to this. </summary> public override bool Equals(System.Object o) { if (o is FilteredQuery) { FilteredQuery fq = (FilteredQuery)o; return(query.Equals(fq.query) && filter.Equals(fq.filter) && GetBoost() == fq.GetBoost()); } return(false); }
public virtual void TestFilteredQuery_Renamed() { Query filteredquery = new FilteredQuery(query, filter); ScoreDoc[] hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(1, hits[0].doc); QueryUtils.Check(filteredquery, searcher); hits = searcher.Search(filteredquery, null, 1000, new Sort("sorter")).scoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(1, hits[0].doc); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "one")), filter); hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check(filteredquery, searcher); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "x")), filter); hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(3, hits[0].doc); QueryUtils.Check(filteredquery, searcher); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "y")), filter); hits = searcher.Search(filteredquery, null, 1000).scoreDocs; Assert.AreEqual(0, hits.Length); QueryUtils.Check(filteredquery, searcher); // test boost Filter f = NewStaticFilterA(); float boost = 2.5f; BooleanQuery bq1 = new BooleanQuery(); TermQuery tq = new TermQuery(new Term("field", "one")); tq.SetBoost(boost); bq1.Add(tq, Occur.MUST); bq1.Add(new TermQuery(new Term("field", "five")), Occur.MUST); BooleanQuery bq2 = new BooleanQuery(); tq = new TermQuery(new Term("field", "one")); filteredquery = new FilteredQuery(tq, f); filteredquery.SetBoost(boost); bq2.Add(filteredquery, Occur.MUST); bq2.Add(new TermQuery(new Term("field", "five")), Occur.MUST); AssertScoreEquals(bq1, bq2); Assert.AreEqual(boost, filteredquery.GetBoost(), 0); Assert.AreEqual(1.0f, tq.GetBoost(), 0); // the boost value of the underlying query shouldn't have changed }