Пример #1
0
            internal SlowMinShouldMatchScorer(BooleanWeight weight, AtomicReader reader, IndexSearcher searcher)
                : base(weight)
            {
                this.Dv     = reader.GetSortedSetDocValues("dv");
                this.MaxDoc = reader.MaxDoc;
                BooleanQuery bq = (BooleanQuery)weight.Query;

                this.MinNrShouldMatch = bq.MinimumNumberShouldMatch;
                this.Sims             = new SimScorer[(int)Dv.ValueCount];
                foreach (BooleanClause clause in bq.Clauses)
                {
                    Debug.Assert(!clause.Prohibited);
                    Debug.Assert(!clause.Required);
                    Term term = ((TermQuery)clause.Query).Term;
                    long ord  = Dv.LookupTerm(term.Bytes);
                    if (ord >= 0)
                    {
                        bool success = Ords.Add(ord);
                        Debug.Assert(success); // no dups
                        TermContext context = TermContext.Build(reader.Context, term);
                        SimWeight   w       = weight.Similarity.ComputeWeight(1f, searcher.CollectionStatistics("field"), searcher.TermStatistics(term, context));
                        var         dummy   = w.ValueForNormalization; // ignored
                        w.Normalize(1F, 1F);
                        Sims[(int)ord] = weight.Similarity.DoSimScorer(w, (AtomicReaderContext)reader.Context);
                    }
                }
            }
Пример #2
0
            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));
            }
Пример #3
0
 public override SimWeight ComputeWeight(float queryBoost, CollectionStatistics collectionStats, params TermStatistics[] termStats)
 {
     SimWeight[] subStats = new SimWeight[m_sims.Length];
     for (int i = 0; i < subStats.Length; i++)
     {
         subStats[i] = m_sims[i].ComputeWeight(queryBoost, collectionStats, termStats);
     }
     return(new MultiStats(subStats));
 }
Пример #4
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));
 }
Пример #5
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);
 }
Пример #6
0
 public override SimWeight ComputeWeight(float queryBoost, CollectionStatistics collectionStats, params TermStatistics[] termStats)
 {
     SimWeight[] subStats = new SimWeight[Sims.Length];
     for (int i = 0; i < subStats.Length; i++)
     {
         subStats[i] = Sims[i].ComputeWeight(queryBoost, collectionStats, termStats);
     }
     return new MultiStats(subStats);
 }
Пример #7
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)));
     }
 }
Пример #8
0
 /// <summary>
 /// Creates a new <seealso cref="Similarity.SimScorer"/> to score matching documents from a segment of the inverted index. </summary>
 /// <param name="weight"> collection information from <seealso cref="#computeWeight(float, CollectionStatistics, TermStatistics...)"/> </param>
 /// <param name="context"> segment of the inverted index to be scored. </param>
 /// <returns> SloppySimScorer for scoring documents across <code>context</code> </returns>
 /// <exception cref="IOException"> if there is a low-level I/O error </exception>
 public abstract SimScorer DoSimScorer(SimWeight weight, AtomicReaderContext context);
Пример #9
0
 public override SimScorer GetSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     return(new SimScorerAnonymousInnerClassHelper(this));
 }
        public override sealed SimScorer GetSimScorer(SimWeight weight, AtomicReaderContext context)
        {
            PerFieldSimWeight perFieldWeight = (PerFieldSimWeight)weight;

            return([email protected](perFieldWeight.delegateWeight, context));
        }
Пример #11
0
        public override sealed SimScorer GetSimScorer(SimWeight stats, AtomicReaderContext context)
        {
            BM25Stats bm25stats = (BM25Stats)stats;

            return(new BM25DocScorer(this, bm25stats, context.AtomicReader.GetNormValues(bm25stats.Field)));
        }
Пример #12
0
 public override sealed SimScorer DoSimScorer(SimWeight stats, AtomicReaderContext context)
 {
     IDFStats idfstats = (IDFStats)stats;
     return new TFIDFSimScorer(this, idfstats, context.AtomicReader.GetNormValues(idfstats.Field));
 }
Пример #13
0
        public override sealed SimScorer GetSimScorer(SimWeight stats, AtomicReaderContext context)
        {
            IDFStats idfstats = (IDFStats)stats;

            return(new TFIDFSimScorer(this, idfstats, context.AtomicReader.GetNormValues(idfstats.Field)));
        }
 public override SimScorer DoSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     throw new InvalidOperationException();
 }
Пример #15
0
 public override SimScorer GetSimScorer(SimWeight stats, AtomicReaderContext context)
 {
     throw UnsupportedOperationException.Create(UNSUPPORTED_MSG);
 }
Пример #16
0
 internal MultiStats(SimWeight[] subStats)
 {
     this.SubStats = subStats;
 }
Пример #17
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));
     }
 }
Пример #18
0
 public override SimScorer DoSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     throw new InvalidOperationException();
 }
Пример #19
0
 public override SimScorer GetSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     throw new System.NotSupportedException();
 }
Пример #20
0
 public override SimScorer GetSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     throw UnsupportedOperationException.Create();
 }
Пример #21
0
 public override SimScorer GetSimScorer(SimWeight stats, AtomicReaderContext context)
 {
     throw new NotSupportedException(UNSUPPORTED_MSG);
 }
 public override sealed SimScorer DoSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     PerFieldSimWeight perFieldWeight = (PerFieldSimWeight)weight;
     return [email protected](perFieldWeight.DelegateWeight, context);
 }
Пример #23
0
 /// <summary>
 /// Creates a new <see cref="Similarity.SimScorer"/> to score matching documents from a segment of the inverted index. </summary>
 /// <param name="weight"> collection information from <see cref="ComputeWeight(float, CollectionStatistics, TermStatistics[])"/> </param>
 /// <param name="context"> segment of the inverted index to be scored. </param>
 /// <returns> Sloppy <see cref="SimScorer"/> for scoring documents across <c>context</c> </returns>
 /// <exception cref="IOException"> if there is a low-level I/O error </exception>
 public abstract SimScorer GetSimScorer(SimWeight weight, AtomicReaderContext context);
Пример #24
0
 public override sealed SimScorer DoSimScorer(SimWeight stats, AtomicReaderContext context)
 {
     BM25Stats bm25stats = (BM25Stats)stats;
     return new BM25DocScorer(this, bm25stats, ((AtomicReader)context.Reader()).GetNormValues(bm25stats.Field));
 }
Пример #25
0
 public override SimScorer GetSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     return(@in.GetSimScorer(weight, context));
 }
Пример #26
0
 public override SimScorer DoSimScorer(SimWeight weight, AtomicReaderContext context)
 {
     return @in.DoSimScorer(weight, context);
 }