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.Similarity, 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"); }
public override Scorer Scorer(IndexReader reader, bool scoreDocsInOrder, bool topScorer, IState state) { Similarity similarity = _parent.GetSimilarity(_searcher); if (_parent.Matches.Count > 128) { return(new LazyInitInScorer(_parent, reader, state, similarity)); } var scorers = ArrayPool <Scorer> .Shared.Rent(_parent.Matches.Count); int index = 0; byte[] norms = reader.Norms(_parent.Field, state); foreach (var match in _parent.Matches) { var termDocs = reader.TermDocs(new Term(_parent.Field, match), state); var scorer = new TermScorer(this, termDocs, similarity, norms); if (scorer.NextDoc(state) != DocIdSetIterator.NO_MORE_DOCS) { scorers[index++] = scorer; } } return(new SharedArrayDisjunctionMaxScorer(1.0f, similarity, scorers, index)); }