示例#1
0
        public override SpanFilterResult BitSpans(IndexReader reader)
        {
            OpenBitSet bits = new OpenBitSet(reader.MaxDoc());

            Mono.Lucene.Net.Search.Spans.Spans spans = query.GetSpans(reader);
            System.Collections.IList           tmp   = new System.Collections.ArrayList(20);
            int currentDoc = -1;

            SpanFilterResult.PositionInfo currentInfo = null;
            while (spans.Next())
            {
                int doc = spans.Doc();
                bits.Set(doc);
                if (currentDoc != doc)
                {
                    currentInfo = new SpanFilterResult.PositionInfo(doc);
                    tmp.Add(currentInfo);
                    currentDoc = doc;
                }
                currentInfo.AddPosition(spans.Start(), spans.End());
            }
            return(new SpanFilterResult(bits, tmp));
        }
示例#2
0
 /// <summary> By default, uses the {@link 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(System.Collections.Generic.ICollection <byte[]> payLoads, int start, int end)
 {
     foreach (byte[] thePayload in payLoads)
     {
         payloadScore = Enclosing_Instance.function.CurrentScore(doc, Enclosing_Instance.fieldName, start, end, payloadsSeen, payloadScore, similarity.ScorePayload(doc, Enclosing_Instance.fieldName, spans.Start(), spans.End(), thePayload, 0, thePayload.Length));
         ++payloadsSeen;
     }
 }