예제 #1
0
        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
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
		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 
		}