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));
            }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 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));
 }
Beispiel #4
0
 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)));
     }
 }
Beispiel #5
0
            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"));
            }
Beispiel #6
0
            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;
 }
Beispiel #8
0
 public SimScorerAnonymousClass(BoostingSimilarity outerInstance, SimScorer sub, FieldCache.Singles values)
 {
     this.outerInstance = outerInstance;
     this.sub           = sub;
     this.values        = values;
 }
Beispiel #9
0
 internal MultiSimScorer(SimScorer[] subScorers)
 {
     this.SubScorers = subScorers;
 }
Beispiel #10
0
 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));
     }
 }