Esempio n. 1
0
        }                                                                                    // LUCENENET specific - added overload for better compatibity

        public MergedEnumerator(bool removeDuplicates, IList <IEnumerator <T> > enumerators) // LUCENENET specific - added overload for better compatibity
        {
            if (enumerators is null)
            {
                throw new ArgumentNullException(nameof(enumerators)); // LUCENENET specific - added guard clause
            }
            this.removeDuplicates = removeDuplicates;
            queue = new TermMergeQueue <T>(enumerators.Count);
            top   = new SubEnumerator <T> [enumerators.Count];
            int index = 0;

            foreach (IEnumerator <T> iter in enumerators)
            {
                // If hasNext
                if (iter.MoveNext())
                {
                    queue.Add(new SubEnumerator <T>
                    {
                        Current    = iter.Current,
                        Enumerator = iter,
                        Index      = index++
                    });
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Sole constructor. </summary>
 /// <param name="slices"> Which sub-reader slices we should
 /// merge.</param>
 public MultiTermsEnum(ReaderSlice[] slices)
 {
     queue               = new TermMergeQueue(slices.Length);
     top                 = new TermsEnumWithSlice[slices.Length];
     subs                = new TermsEnumWithSlice[slices.Length];
     subDocs             = new MultiDocsEnum.EnumWithSlice[slices.Length];
     subDocsAndPositions = new MultiDocsAndPositionsEnum.EnumWithSlice[slices.Length];
     for (int i = 0; i < slices.Length; i++)
     {
         subs[i]                      = new TermsEnumWithSlice(i, slices[i]);
         subDocs[i]                   = new MultiDocsEnum.EnumWithSlice();
         subDocs[i].Slice             = slices[i];
         subDocsAndPositions[i]       = new MultiDocsAndPositionsEnum.EnumWithSlice();
         subDocsAndPositions[i].Slice = slices[i];
     }
     currentSubs = new TermsEnumWithSlice[slices.Length];
 }
Esempio n. 3
0
        public MergedIterator(bool removeDuplicates, params IEnumerator <T>[] iterators)
        {
            this.removeDuplicates = removeDuplicates;
            queue = new TermMergeQueue <T>(iterators.Length);
            top   = new SubIterator <T> [iterators.Length];
            int index = 0;

            foreach (IEnumerator <T> iter in iterators)
            {
                // If hasNext
                if (iter.MoveNext())
                {
                    SubIterator <T> sub = new SubIterator <T>();
                    sub.Current  = iter.Current;
                    sub.Iterator = iter;
                    sub.Index    = index++;
                    queue.Add(sub);
                }
            }
        }