示例#1
0
        public virtual void  TestSkipTo()
        {
            Term      allTerm   = new Term(FIELD, "all");
            TermQuery termQuery = new TermQuery(allTerm);

            Weight weight = termQuery.Weight(indexSearcher);

            TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));

            Assert.IsTrue(ts.Advance(3) != DocIdSetIterator.NO_MORE_DOCS, "Didn't skip");
            //The next doc should be doc 5
            Assert.IsTrue(ts.DocID() == 5, "doc should be number 5");
        }
示例#2
0
        public virtual void  TestNext()
        {
            Term      allTerm   = new Term(FIELD, "all");
            TermQuery termQuery = new TermQuery(allTerm);

            Weight weight = termQuery.Weight(indexSearcher);

            TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));

            Assert.IsTrue(ts.NextDoc() != DocIdSetIterator.NO_MORE_DOCS, "next did not return a doc");
            Assert.IsTrue(ts.Score() == 1.6931472f, "score is not correct");
            Assert.IsTrue(ts.NextDoc() != DocIdSetIterator.NO_MORE_DOCS, "next did not return a doc");
            Assert.IsTrue(ts.Score() == 1.6931472f, "score is not correct");
            Assert.IsTrue(ts.NextDoc() == DocIdSetIterator.NO_MORE_DOCS, "next returned a doc and it should not have");
        }
示例#3
0
        public virtual void  TestExplain()
        {
            Term      allTerm   = new Term(FIELD, "all");
            TermQuery termQuery = new TermQuery(allTerm);

            Weight weight = termQuery.Weight(indexSearcher);

            TermScorer  ts          = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
            Explanation explanation = ts.Explain(0);

            Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
            //System.out.println("Explanation: " + explanation.toString());
            //All this Explain does is return the term frequency
            Assert.IsTrue(explanation.GetValue() == 1, "term frq is not 1");
            explanation = ts.Explain(1);
            Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
            //System.out.println("Explanation: " + explanation.toString());
            //All this Explain does is return the term frequency
            Assert.IsTrue(explanation.GetValue() == 0, "term frq is not 0");

            Term dogsTerm = new Term(FIELD, "dogs");

            termQuery = new TermQuery(dogsTerm);
            weight    = termQuery.Weight(indexSearcher);

            ts          = new TermScorer(weight, indexReader.TermDocs(dogsTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
            explanation = ts.Explain(1);
            Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
            //System.out.println("Explanation: " + explanation.toString());
            //All this Explain does is return the term frequency
            float sqrtTwo = (float)System.Math.Sqrt(2.0f);

            Assert.IsTrue(explanation.GetValue() == sqrtTwo, "term frq: " + explanation.GetValue() + " is not the square root of 2");

            explanation = ts.Explain(10);             //try a doc out of range
            Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
            //System.out.println("Explanation: " + explanation.toString());
            //All this Explain does is return the term frequency

            Assert.IsTrue(explanation.GetValue() == 0, "term frq: " + explanation.GetValue() + " is not 0");
        }
示例#4
0
        public virtual void  Test()
        {
            Term      allTerm   = new Term(FIELD, "all");
            TermQuery termQuery = new TermQuery(allTerm);

            Weight weight = termQuery.Weight(indexSearcher);

            TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));

            //we have 2 documents with the term all in them, one document for all the other values
            System.Collections.IList docs = new System.Collections.ArrayList();
            //must call next first


            ts.Score(new AnonymousClassCollector(docs, this));
            Assert.IsTrue(docs.Count == 2, "docs Size: " + docs.Count + " is not: " + 2);
            TestHit doc0 = (TestHit)docs[0];
            TestHit doc5 = (TestHit)docs[1];

            //The scores should be the same
            Assert.IsTrue(doc0.score == doc5.score, doc0.score + " does not equal: " + doc5.score);

            /*
             * Score should be (based on Default Sim.:
             * All floats are approximate
             * tf = 1
             * numDocs = 6
             * docFreq(all) = 2
             * idf = ln(6/3) + 1 = 1.693147
             * idf ^ 2 = 2.8667
             * boost = 1
             * lengthNorm = 1 //there is 1 term in every document
             * coord = 1
             * sumOfSquaredWeights = (idf * boost) ^ 2 = 1.693147 ^ 2 = 2.8667
             * queryNorm = 1 / (sumOfSquaredWeights)^0.5 = 1 /(1.693147) = 0.590
             *
             * score = 1 * 2.8667 * 1 * 1 * 0.590 = 1.69
             *
             */
            Assert.IsTrue(doc0.score == 1.6931472f, doc0.score + " does not equal: " + 1.6931472f);
        }
示例#5
0
		public virtual void  TestExplain()
		{
			Term allTerm = new Term(FIELD, "all");
			TermQuery termQuery = new TermQuery(allTerm);
			
			Weight weight = termQuery.Weight(indexSearcher);
			
			TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			Explanation explanation = ts.Explain(0);
			Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
			//System.out.println("Explanation: " + explanation.toString());
			//All this Explain does is return the term frequency
			Assert.IsTrue(explanation.GetValue() == 1, "term frq is not 1");
			explanation = ts.Explain(1);
			Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
			//System.out.println("Explanation: " + explanation.toString());
			//All this Explain does is return the term frequency
			Assert.IsTrue(explanation.GetValue() == 0, "term frq is not 0");
			
			Term dogsTerm = new Term(FIELD, "dogs");
			termQuery = new TermQuery(dogsTerm);
			weight = termQuery.Weight(indexSearcher);
			
			ts = new TermScorer(weight, indexReader.TermDocs(dogsTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			explanation = ts.Explain(1);
			Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
			//System.out.println("Explanation: " + explanation.toString());
			//All this Explain does is return the term frequency
			float sqrtTwo = (float) System.Math.Sqrt(2.0f);
			Assert.IsTrue(explanation.GetValue() == sqrtTwo, "term frq: " + explanation.GetValue() + " is not the square root of 2");
			
			explanation = ts.Explain(10); //try a doc out of range
			Assert.IsTrue(explanation != null, "explanation is null and it shouldn't be");
			//System.out.println("Explanation: " + explanation.toString());
			//All this Explain does is return the term frequency
			
			Assert.IsTrue(explanation.GetValue() == 0, "term frq: " + explanation.GetValue() + " is not 0");
		}
示例#6
0
		public virtual void  TestSkipTo()
		{
			
			Term allTerm = new Term(FIELD, "all");
			TermQuery termQuery = new TermQuery(allTerm);
			
			Weight weight = termQuery.Weight(indexSearcher);
			
			TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			Assert.IsTrue(ts.Advance(3) != DocIdSetIterator.NO_MORE_DOCS, "Didn't skip");
			//The next doc should be doc 5
			Assert.IsTrue(ts.DocID() == 5, "doc should be number 5");
		}
示例#7
0
		public virtual void  TestNext()
		{
			
			Term allTerm = new Term(FIELD, "all");
			TermQuery termQuery = new TermQuery(allTerm);
			
			Weight weight = termQuery.Weight(indexSearcher);
			
			TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			Assert.IsTrue(ts.NextDoc() != DocIdSetIterator.NO_MORE_DOCS, "next did not return a doc");
			Assert.IsTrue(ts.Score() == 1.6931472f, "score is not correct");
			Assert.IsTrue(ts.NextDoc() != DocIdSetIterator.NO_MORE_DOCS, "next did not return a doc");
			Assert.IsTrue(ts.Score() == 1.6931472f, "score is not correct");
			Assert.IsTrue(ts.NextDoc() == DocIdSetIterator.NO_MORE_DOCS, "next returned a doc and it should not have");
		}
示例#8
0
		public virtual void  Test()
		{
			
			Term allTerm = new Term(FIELD, "all");
			TermQuery termQuery = new TermQuery(allTerm);
			
			Weight weight = termQuery.Weight(indexSearcher);
			
			TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			//we have 2 documents with the term all in them, one document for all the other values
			System.Collections.IList docs = new System.Collections.ArrayList();
			//must call next first
			
			
			ts.Score(new AnonymousClassCollector(docs, this));
			Assert.IsTrue(docs.Count == 2, "docs Size: " + docs.Count + " is not: " + 2);
			TestHit doc0 = (TestHit) docs[0];
			TestHit doc5 = (TestHit) docs[1];
			//The scores should be the same
			Assert.IsTrue(doc0.score == doc5.score, doc0.score + " does not equal: " + doc5.score);
			/*
			Score should be (based on Default Sim.:
			All floats are approximate
			tf = 1
			numDocs = 6
			docFreq(all) = 2
			idf = ln(6/3) + 1 = 1.693147
			idf ^ 2 = 2.8667
			boost = 1
			lengthNorm = 1 //there is 1 term in every document
			coord = 1
			sumOfSquaredWeights = (idf * boost) ^ 2 = 1.693147 ^ 2 = 2.8667
			queryNorm = 1 / (sumOfSquaredWeights)^0.5 = 1 /(1.693147) = 0.590
			
			score = 1 * 2.8667 * 1 * 1 * 0.590 = 1.69
			
			*/
			Assert.IsTrue(doc0.score == 1.6931472f, doc0.score + " does not equal: " + 1.6931472f);
		}
		public virtual void  TestSkipTo()
		{
			
			Term allTerm = new Term(FIELD, "all");
			TermQuery termQuery = new TermQuery(allTerm);
			
			Weight weight = termQuery.Weight(indexSearcher);
			
			TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			Assert.IsTrue(ts != null, "ts is null and it shouldn't be");
			Assert.IsTrue(ts.SkipTo(3) == true, "Didn't skip");
			//The next doc should be doc 5
			Assert.IsTrue(ts.Doc() == 5, "doc should be number 5");
		}
示例#10
0
		public virtual void  TestNext()
		{
			
			Term allTerm = new Term(FIELD, "all");
			TermQuery termQuery = new TermQuery(allTerm);
			
			Weight weight = termQuery.Weight(indexSearcher);
			
			TermScorer ts = new TermScorer(weight, indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), indexReader.Norms(FIELD));
			Assert.IsTrue(ts != null, "ts is null and it shouldn't be");
			Assert.IsTrue(ts.Next() == true, "next did not return a doc");
			Assert.IsTrue(ts.Score() == 1.6931472f, "score is not correct");
			Assert.IsTrue(ts.Next() == true, "next did not return a doc");
			Assert.IsTrue(ts.Score() == 1.6931472f, "score is not correct");
			Assert.IsTrue(ts.Next() == false, "next returned a doc and it should not have");
		}