public override SimScorer GetSimScorer(SimWeight stats, AtomicReaderContext context) { SimScorer sub = Sim.GetSimScorer(stats, context); FieldCache.Singles values = FieldCache.DEFAULT.GetSingles(context.AtomicReader, BoostField, false); return(new SimScorerAnonymousInnerClassHelper(this, sub, values)); }
public override SimScorer DoSimScorer(SimWeight stats, AtomicReaderContext context) { SimScorer[] subScorers = new SimScorer[Sims.Length]; for (int i = 0; i < subScorers.Length; i++) { subScorers[i] = Sims[i].DoSimScorer(((MultiStats)stats).SubStats[i], context); } return new MultiSimScorer(subScorers); }
public override SimScorer GetSimScorer(SimWeight stats, AtomicReaderContext context) { SimScorer[] subScorers = new SimScorer[m_sims.Length]; for (int i = 0; i < subScorers.Length; i++) { subScorers[i] = m_sims[i].GetSimScorer(((MultiStats)stats).subStats[i], context); } return(new MultiSimScorer(subScorers)); }
public override SimScorer DoSimScorer(SimWeight stats, AtomicReaderContext context) { if (stats is MultiSimilarity.MultiStats) { // a multi term query (e.g. phrase). return the summation, // scoring almost as if it were boolean query SimWeight[] subStats = ((MultiSimilarity.MultiStats)stats).SubStats; SimScorer[] subScorers = new SimScorer[subStats.Length]; for (int i = 0; i < subScorers.Length; i++) { BasicStats basicstats = (BasicStats)subStats[i]; subScorers[i] = new BasicSimScorer(this, basicstats, context.AtomicReader.GetNormValues(basicstats.field)); } return(new MultiSimilarity.MultiSimScorer(subScorers)); } else { BasicStats basicstats = (BasicStats)stats; return(new BasicSimScorer(this, basicstats, context.AtomicReader.GetNormValues(basicstats.field))); } }
public override Explanation Explain(AtomicReaderContext context, int doc) { Scorer scorer = GetScorer(context, context.AtomicReader.LiveDocs); if (scorer != null) { int newDoc = scorer.Advance(doc); if (newDoc == doc) { float freq = scorer.Freq; SimScorer docScorer = similarity.GetSimScorer(stats, context); ComplexExplanation result = new ComplexExplanation(); result.Description = "weight(" + Query + " in " + doc + ") [" + similarity.GetType().Name + "], result of:"; Explanation scoreExplanation = docScorer.Explain(doc, new Explanation(freq, "termFreq=" + freq)); result.AddDetail(scoreExplanation); result.Value = scoreExplanation.Value; result.Match = true; return(result); } } return(new ComplexExplanation(false, 0.0f, "no matching term")); }
public override Explanation Explain(AtomicReaderContext context, int doc) { Scorer scorer = Scorer(context, (context.AtomicReader).LiveDocs); if (scorer != null) { int newDoc = scorer.Advance(doc); if (newDoc == doc) { float freq = OuterInstance.slop == 0 ? scorer.Freq() : ((SloppyPhraseScorer)scorer).SloppyFreq(); SimScorer docScorer = Similarity.DoSimScorer(Stats, context); ComplexExplanation result = new ComplexExplanation(); result.Description = "weight(" + Query + " in " + doc + ") [" + Similarity.GetType().Name + "], result of:"; Explanation scoreExplanation = docScorer.Explain(doc, new Explanation(freq, "phraseFreq=" + freq)); result.AddDetail(scoreExplanation); result.Value = scoreExplanation.Value; result.Match = true; return(result); } } return(new ComplexExplanation(false, 0.0f, "no matching term")); }
public SimScorerAnonymousInnerClassHelper(BoostingSimilarity outerInstance, SimScorer sub, FieldCache.Singles values) { this.OuterInstance = outerInstance; this.Sub = sub; this.Values = values; }
public SimScorerAnonymousClass(BoostingSimilarity outerInstance, SimScorer sub, FieldCache.Singles values) { this.outerInstance = outerInstance; this.sub = sub; this.values = values; }
internal MultiSimScorer(SimScorer[] subScorers) { this.SubScorers = subScorers; }
public override SimScorer DoSimScorer(SimWeight stats, AtomicReaderContext context) { if (stats is MultiSimilarity.MultiStats) { // a multi term query (e.g. phrase). return the summation, // scoring almost as if it were boolean query SimWeight[] subStats = ((MultiSimilarity.MultiStats)stats).SubStats; SimScorer[] subScorers = new SimScorer[subStats.Length]; for (int i = 0; i < subScorers.Length; i++) { BasicStats basicstats = (BasicStats)subStats[i]; subScorers[i] = new BasicSimScorer(this, basicstats, context.AtomicReader.GetNormValues(basicstats.field)); } return new MultiSimilarity.MultiSimScorer(subScorers); } else { BasicStats basicstats = (BasicStats)stats; return new BasicSimScorer(this, basicstats, context.AtomicReader.GetNormValues(basicstats.field)); } }