this abstract class defines methods to iterate over a set of non-decreasing doc ids. Note that this class assumes it iterates on doc Ids, and therefore #NO_MORE_DOCS is set to {@value #NO_MORE_DOCS} in order to be used as a sentinel object. Implementations of this class are expected to consider Integer#MAX_VALUE as an invalid value.
Ejemplo n.º 1
0
 /// <summary>Construct a <code>ReqExclScorer</code>.</summary>
 /// <param name="reqScorer">The scorer that must match, except where
 /// </param>
 /// <param name="exclDisi">indicates exclusion.
 /// </param>
 public ReqExclScorer(Scorer reqScorer, DocIdSetIterator exclDisi)
     : base(null)
 {
     // No similarity used.
     this.reqScorer = reqScorer;
     this.exclDisi = exclDisi;
 }
Ejemplo n.º 2
0
            public override int Advance(int target)
            {
                if (lastReturn == DocIdSetIterator.NO_MORE_DOCS) return DocIdSetIterator.NO_MORE_DOCS;

                if (target <= lastReturn) target = lastReturn + 1;

                if (target >= parent.max)
                {
                    return (lastReturn = DocIdSetIterator.NO_MORE_DOCS);
                }

                if (it1 != null && innerDocid < target)
                {
                    if ((innerDocid = it1.Advance(target)) == DocIdSetIterator.NO_MORE_DOCS)
                    {
                        it1 = null;
                    }
                }

                while (it1 != null && innerDocid == target)
                {
                    target++;
                    if (target >= parent.max)
                    {
                        return (lastReturn = DocIdSetIterator.NO_MORE_DOCS);
                    }
                    if ((innerDocid = it1.Advance(target)) == DocIdSetIterator.NO_MORE_DOCS)
                    {
                        it1 = null;
                    }
                }
                return (lastReturn = target);
            }
Ejemplo n.º 3
0
 internal DocSetIteratorWeight(Query query, Similarity similarity, DocIdSetIterator iter)
 {
     _query = query;
     _similarity = similarity;
     _iter = iter;
     _queryNorm = 1.0f;
     _queryWeight = _query.Boost;
 }
Ejemplo n.º 4
0
		/// <summary> Constructor.</summary>
		/// <param name="innerIter">Underlying DocIdSetIterator.
		/// </param>
		public FilteredDocIdSetIterator(DocIdSetIterator innerIter)
		{
			if (innerIter == null)
			{
				throw new System.ArgumentException("null iterator");
			}
			_innerIter = innerIter;
			doc = - 1;
		}
 protected FilteredDocSetIterator(DocIdSetIterator innerIter)
 {
     if (innerIter == null)
     {
         throw new ArgumentNullException("null iterator");
     }
     _innerIter = innerIter;
     _currentDoc = -1;
 }
		/// <summary> Constructor.</summary>
		/// <param name="innerIter">Underlying DocIdSetIterator.
		/// </param>
		protected FilteredDocIdSetIterator(DocIdSetIterator innerIter)
		{
			if (innerIter == null)
			{
				throw new System.ArgumentException("null iterator");
			}
			internalInnerIter = innerIter;
			doc = - 1;
		}
 protected FilteredDocSetIterator(DocIdSetIterator innerIter)
 {
     if (innerIter == null)
     {
         throw new System.ArgumentException("null iterator");
     }
     this.innerIter = innerIter;
     currentDoc = -1;
 }
Ejemplo n.º 8
0
            private void Initialize()
            {
                it1 = parent.innerSet.Iterator();

                try
                {
                    if ((innerDocid = it1.NextDoc()) == DocIdSetIterator.NO_MORE_DOCS) it1 = null;
                }
                catch
                {                 
                }
            }
Ejemplo n.º 9
0
 ///<summary>Adds a DocIdSetIterator to the DisiDocQueue in log(size) time if either
 ///   * the DisiDocQueue is not full, or not lessThan(disi, top()). </summary>
 ///   * <param name="disi"> </param>
 ///   * <returns> true if DocIdSetIterator is added, false otherwise. </returns>
 public bool Insert(DocIdSetIterator disi)
 {
     if (size < maxSize)
     {
         Put(disi);
         return true;
     }
     else
     {
         int docNr = disi.DocID();
         if ((size > 0) && (!(docNr < topHDD.Doc))) // heap[1] is top()
         {
             heap[1] = new HeapedDisiDoc(disi, docNr);
             DownHeap();
             return true;
         }
         else
         {
             return false;
         }
     }
 }
Ejemplo n.º 10
0
 internal HeapedDisiDoc(DocIdSetIterator disi, int doc)
 {
     Disi = disi;
     Doc = doc;
 }
Ejemplo n.º 11
0
 public JustCompileFilteredDocIdSetIterator(DocIdSetIterator innerIter)
     : base(innerIter)
 {
 }
Ejemplo n.º 12
0
 protected override DocIdSet CacheImpl(DocIdSetIterator iterator, AtomicReader reader)
 {
     var cached = new FixedBitSet(reader.MaxDoc);
     filterWasUsed.Set(true);
     cached.Or(iterator);
     return cached;
 }
Ejemplo n.º 13
0
 /// <summary>Construct a <c>ReqExclScorer</c>.</summary>
 /// <param name="reqScorer">The scorer that must match, except where
 /// </param>
 /// <param name="exclDisi">indicates exclusion.
 /// </param>
 public ReqExclScorer(Scorer reqScorer, DocIdSetIterator exclDisi) : base(null)
 { // No similarity used.
     this.reqScorer = reqScorer;
     this.exclDisi  = exclDisi;
 }
Ejemplo n.º 14
0
 protected internal LeapFrogScorer(Weight weight, DocIdSetIterator primary, DocIdSetIterator secondary, Scorer scorer)
     : base(weight)
 {
     this.Primary = primary;
     this.Secondary = secondary;
     this.Scorer = scorer;
 }
 public TestDocIdSetIterator(List<int> dupDocs, DocIdSetIterator innerIter)
     : base(innerIter)
 {
     this.dupDocs = dupDocs;
     if (this.dupDocs != null && this.dupDocs.Count > 0)
     {
         int[] arr = this.dupDocs.ToArray();
         min = arr[0];
         max = arr[arr.Length - 1];
     }
     else
     {
         min = int.MaxValue;
         max = -1;
     }
 }
Ejemplo n.º 16
0
 public MyFilteredDocSetIterator(DocIdSetIterator iterator)
     : base(iterator)
 {
 }
Ejemplo n.º 17
0
 public FacetTermScorer(FacetTermQuery parent, Similarity similarity, DocIdSetIterator docidsetIter, BoboDocScorer scorer)
     : base(similarity)
 {
     _parent = parent;
     _docSetIter = docidsetIter;
     _scorer = scorer;
 }
Ejemplo n.º 18
0
 internal SVInOrderScorer(TermsIncludingScoreQuery outerInstance, Weight weight, Bits acceptDocs,
     TermsEnum termsEnum, int maxDoc, long cost)
     : base(weight)
 {
     this.outerInstance = outerInstance;
     FixedBitSet matchingDocs = new FixedBitSet(maxDoc);
     scores = new float[maxDoc];
     FillDocsAndScores(matchingDocs, acceptDocs, termsEnum);
     matchingDocsIterator = matchingDocs.GetIterator();
     cost_Renamed = cost;
 }
Ejemplo n.º 19
0
 protected internal FacetTermScorer(Similarity similarity, DocIdSetIterator docidsetIter, BoboDocScorer scorer)
     : base(similarity)
 {
     docSetIter = docidsetIter;
     this.scorer = scorer;
 }
Ejemplo n.º 20
0
 internal PrimaryAdvancedLeapFrogScorer(Weight weight, int firstFilteredDoc, DocIdSetIterator filterIter, Scorer other)
     : base(weight, filterIter, other, other)
 {
     this.firstFilteredDoc = firstFilteredDoc;
     this.m_primaryDoc     = firstFilteredDoc; // initialize to prevent and advance call to move it further
 }
Ejemplo n.º 21
0
 protected internal LeapFrogScorer(Weight weight, DocIdSetIterator primary, DocIdSetIterator secondary, Scorer scorer)
     : base(weight)
 {
     this.primary   = primary;
     this.secondary = secondary;
     this.scorer    = scorer;
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Default cache implementation: uses <seealso cref="WAH8DocIdSet"/>.
 /// </summary>
 protected virtual DocIdSet CacheImpl(DocIdSetIterator iterator, AtomicReader reader)
 {
     var builder = new WAH8DocIdSet.Builder();
     builder.Add(iterator);
     return builder.Build();
 }
Ejemplo n.º 23
0
 ///<summary>Adds a Scorer to a ScorerDocQueue in log(size) time.
 ///   * If one tries to add more Scorers than maxSize
 ///   * a RuntimeException (ArrayIndexOutOfBound) is thrown. </summary>
 public void Put(DocIdSetIterator disi)
 {
     size++;
     heap[size] = new HeapedDisiDoc(disi);
     UpHeap();
 }
Ejemplo n.º 24
0
 internal DocSetIteratorScorer(Similarity similarity, DocIdSetIterator iter, Weight weight, IndexReader reader)
     : base(similarity)
 {
     _iter = iter;
     _score = weight.Value;
     _reader = reader;
 }
Ejemplo n.º 25
0
 public DocsetQuery(DocIdSetIterator iter)
 {
     _iter = iter;
 }
Ejemplo n.º 26
0
 public ConstantScorer(ConstantScoreQuery outerInstance, DocIdSetIterator docIdSetIterator, Weight w, float theScore)
     : base(w)
 {
     this.OuterInstance = outerInstance;
     this.TheScore = theScore;
     this.DocIdSetIterator = docIdSetIterator;
 }
Ejemplo n.º 27
0
			public ConstantScorer(ConstantScoreQuery enclosingInstance, Similarity similarity, IndexReader reader, Weight w):base(similarity)
			{
				InitBlock(enclosingInstance);
				theScore = w.GetValue();
				DocIdSet docIdSet = Enclosing_Instance.filter.GetDocIdSet(reader);
				if (docIdSet == null)
				{
					docIdSetIterator = DocIdSet.EMPTY_DOCIDSET.Iterator();
				}
				else
				{
					DocIdSetIterator iter = docIdSet.Iterator();
					if (iter == null)
					{
						docIdSetIterator = DocIdSet.EMPTY_DOCIDSET.Iterator();
					}
					else
					{
						docIdSetIterator = iter;
					}
				}
			}
 public Item(DocIdSetIterator iter)
 {
     Iter = iter;
     Doc = -1;
 }
Ejemplo n.º 29
0
		/// <summary>Advance to non excluded doc.
		/// <br/>On entry:
		/// <ul>
		/// <li>reqScorer != null, </li>
		/// <li>exclScorer != null, </li>
		/// <li>reqScorer was advanced once via next() or skipTo() 
        /// and reqScorer.doc() may still be excluded.</li>
		/// </ul>
		/// Advances reqScorer a non excluded required doc, if any.
		/// </summary>
		/// <returns> true iff there is a non excluded required doc.
		/// </returns>
		private int ToNonExcluded()
		{
			int exclDoc = exclDisi.DocID();
			int reqDoc = reqScorer.DocID(); // may be excluded
			do 
			{
				if (reqDoc < exclDoc)
				{
					return reqDoc; // reqScorer advanced to before exclScorer, ie. not excluded
				}
				else if (reqDoc > exclDoc)
				{
					exclDoc = exclDisi.Advance(reqDoc);
					if (exclDoc == NO_MORE_DOCS)
					{
						exclDisi = null; // exhausted, no more exclusions
						return reqDoc;
					}
					if (exclDoc > reqDoc)
					{
						return reqDoc; // not excluded
					}
				}
			}
			while ((reqDoc = reqScorer.NextDoc()) != NO_MORE_DOCS);
			reqScorer = null; // exhausted, nothing left
			return NO_MORE_DOCS;
		}
Ejemplo n.º 30
0
 internal PrimaryAdvancedLeapFrogScorer(Weight weight, int firstFilteredDoc, DocIdSetIterator filterIter, Scorer other)
     : base(weight, filterIter, other, other)
 {
     this.FirstFilteredDoc = firstFilteredDoc;
     this.PrimaryDoc = firstFilteredDoc; // initialize to prevent and advance call to move it further
 }
Ejemplo n.º 31
0
 public override DocIdSetIterator GetIterator()
 {
     return(DocIdSetIterator.GetEmpty());
 }
Ejemplo n.º 32
0
 /// <summary>
 /// Constructor. </summary>
 /// <param name="innerIter"> Underlying <see cref="DocIdSetIterator"/>. </param>
 protected FilteredDocIdSetIterator(DocIdSetIterator innerIter) // LUCENENET: CA1012: Abstract types should not have constructors (marked protected)
 {
     m_innerIter = innerIter ?? throw new ArgumentNullException(nameof(innerIter), "null iterator");
     doc         = -1;
 }
Ejemplo n.º 33
0
 internal HeapedDisiDoc(DocIdSetIterator disi)
     : this(disi, disi.DocID())
 {
 }
Ejemplo n.º 34
0
 /// <summary>
 /// Constructor. </summary>
 /// <param name="innerIter"> Underlying <see cref="DocIdSetIterator"/>. </param>
 public FilteredDocIdSetIterator(DocIdSetIterator innerIter)
 {
     m_innerIter = innerIter ?? throw new ArgumentNullException(nameof(innerIter), "null iterator");
     doc         = -1;
 }
Ejemplo n.º 35
0
 public ConstantScorer(ConstantScoreQuery enclosingInstance, Similarity similarity, IndexReader reader, Weight w) : base(similarity)
 {
     InitBlock(enclosingInstance);
     theScore         = w.GetValue();
     docIdSetIterator = Enclosing_Instance.filter.GetDocIdSet(reader).Iterator();
 }
 protected override DocIdSet CacheImpl(DocIdSetIterator iterator, AtomicReader reader)
 {
     FixedBitSet cached = new FixedBitSet(reader.MaxDoc);
     cached.Or(iterator);
     return cached;
 }
Ejemplo n.º 37
0
 /// <summary>
 /// Construct a <see cref="ReqExclScorer"/>. </summary>
 /// <param name="reqScorer"> The scorer that must match, except where </param>
 /// <param name="exclDisi"> Indicates exclusion. </param>
 public ReqExclScorer(Scorer reqScorer, DocIdSetIterator exclDisi)
     : base(reqScorer.m_weight)
 {
     this.reqScorer = reqScorer;
     this.exclDisi  = exclDisi;
 }
Ejemplo n.º 38
0
			public JustCompileFilteredDocIdSetIterator(DocIdSetIterator innerIter):base(innerIter)
			{
			}
Ejemplo n.º 39
0
 private void InitBlock()
 {
     iterator = new AnonymousClassDocIdSetIterator(this);
 }