protected internal override bool Score(HitCollector c, int end) { Similarity similarity = GetSimilarity(); // cache sim in local float[] normDecoder = Similarity.GetNormDecoder(); while (doc < end) { // for docs in window int f = freqs[pointer]; float score = f < SCORE_CACHE_SIZE?scoreCache[f]:similarity.Tf(f) * weightValue; // cache miss score *= normDecoder[norms[doc] & 0xFF]; // normalize for field c.Collect(doc, score); // collect score if (++pointer >= pointerMax) { pointerMax = termDocs.Read(docs, freqs); // refill buffers if (pointerMax != 0) { pointer = 0; } else { termDocs.Close(); // close stream doc = System.Int32.MaxValue; // set to sentinel value return(false); } } doc = docs[pointer]; } return(true); }
static TermScorer() { SIM_NORM_DECODER = Similarity.GetNormDecoder(); }