Ejemplo n.º 1
0
 //
 protected internal override bool SetFreqCurrentDoc()
 {
     if (!More)
     {
         return(false);
     }
     Doc          = Spans.Doc();
     Freq_Renamed = 0.0f;
     PayloadScore = 0;
     PayloadsSeen = 0;
     do
     {
         int matchLength = Spans.End() - Spans.Start();
         Freq_Renamed += DocScorer.ComputeSlopFactor(matchLength);
         Spans[] spansArr = new Spans[1];
         spansArr[0] = Spans;
         GetPayloads(spansArr);
         More = Spans.Next();
     } while (More && (Doc == Spans.Doc()));
     return(true);
 }
Ejemplo n.º 2
0
                protected internal override bool SetFreqCurrentDoc()
                {
                    if (!More)
                    {
                        return(false);
                    }
                    Doc                  = Spans.Doc();
                    Freq_Renamed         = 0.0f;
                    NumMatches           = 0;
                    PayloadScore_Renamed = 0;
                    PayloadsSeen         = 0;
                    while (More && Doc == Spans.Doc())
                    {
                        int matchLength = Spans.End() - Spans.Start();

                        Freq_Renamed += DocScorer.ComputeSlopFactor(matchLength);
                        NumMatches++;
                        ProcessPayload(OuterInstance.Similarity);

                        More = Spans.Next(); // this moves positions to the next match in this
                        // document
                    }
                    return(More || (Freq_Renamed != 0));
                }
Ejemplo n.º 3
0
 protected internal virtual void ProcessPayload(Similarity similarity)
 {
     if (TermSpans.PayloadAvailable)
     {
         DocsAndPositionsEnum postings = TermSpans.Postings;
         Payload = postings.Payload;
         if (Payload != null)
         {
             PayloadScore_Renamed = OuterInstance.OuterInstance.Function.CurrentScore(Doc, OuterInstance.OuterInstance.Term.Field, Spans.Start(), Spans.End(), PayloadsSeen, PayloadScore_Renamed, DocScorer.ComputePayloadFactor(Doc, Spans.Start(), Spans.End(), Payload));
         }
         else
         {
             PayloadScore_Renamed = OuterInstance.OuterInstance.Function.CurrentScore(Doc, OuterInstance.OuterInstance.Term.Field, Spans.Start(), Spans.End(), PayloadsSeen, PayloadScore_Renamed, 1F);
         }
         PayloadsSeen++;
     }
     else
     {
         // zero out the payload?
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// By default, uses the <seealso cref="PayloadFunction"/> to score the payloads, but
 /// can be overridden to do other things.
 /// </summary>
 /// <param name="payLoads"> The payloads </param>
 /// <param name="start"> The start position of the span being scored </param>
 /// <param name="end"> The end position of the span being scored
 /// </param>
 /// <seealso cref= Spans </seealso>
 protected internal virtual void ProcessPayloads(ICollection <byte[]> payLoads, int start, int end)
 {
     foreach (var thePayload in payLoads)
     {
         Scratch.Bytes  = thePayload;
         Scratch.Offset = 0;
         Scratch.Length = thePayload.Length;
         PayloadScore   = OuterInstance.Function.CurrentScore(Doc, OuterInstance.FieldName, start, end, PayloadsSeen, PayloadScore, DocScorer.ComputePayloadFactor(Doc, Spans.Start(), Spans.End(), Scratch));
         ++PayloadsSeen;
     }
 }