public override int GetOrd(int docID) { int subIndex = ReaderUtil.SubIndex(docID, docStarts); int segmentOrd = values[subIndex].GetOrd(docID - docStarts[subIndex]); return(segmentOrd == -1 ? segmentOrd : (int)mapping.GetGlobalOrd(subIndex, segmentOrd)); }
public override long NextOrd() { long segmentOrd = values[currentSubIndex].NextOrd(); if (segmentOrd == NO_MORE_ORDS) { return(segmentOrd); } else { return(mapping.GetGlobalOrd(currentSubIndex, segmentOrd)); } }
private IEnumerable <long?> GetMergeSortedFieldDocToOrdEnumerable(AtomicReader[] readers, SortedDocValues[] dvs, OrdinalMap map) { int readerUpTo = -1; int docIDUpTo = 0; AtomicReader currentReader = null; Bits currentLiveDocs = null; while (true) { if (readerUpTo == readers.Length) { yield break; } if (currentReader == null || docIDUpTo == currentReader.MaxDoc) { readerUpTo++; if (readerUpTo < readers.Length) { currentReader = readers[readerUpTo]; currentLiveDocs = currentReader.LiveDocs; } docIDUpTo = 0; continue; } if (currentLiveDocs == null || currentLiveDocs.Get(docIDUpTo)) { int segOrd = dvs[readerUpTo].GetOrd(docIDUpTo); docIDUpTo++; yield return(map.GetGlobalOrd(readerUpTo, segOrd)); continue; } docIDUpTo++; } }
private IEnumerable <long?> GetMergeSortedSetOrdsEnumerable(AtomicReader[] readers, SortedSetDocValues[] dvs, OrdinalMap map) { int readerUpto = -1; int docIDUpto = 0; AtomicReader currentReader = null; Bits currentLiveDocs = null; long[] ords = new long[8]; int ordUpto = 0; int ordLength = 0; while (true) { if (readerUpto == readers.Length) { yield break; } if (ordUpto < ordLength) { ordUpto++; yield return(ords[ordUpto]); continue; } if (currentReader == null || docIDUpto == currentReader.MaxDoc) { readerUpto++; if (readerUpto < readers.Length) { currentReader = readers[readerUpto]; currentLiveDocs = currentReader.LiveDocs; } docIDUpto = 0; continue; } if (currentLiveDocs == null || currentLiveDocs.Get(docIDUpto)) { Debug.Assert(docIDUpto < currentReader.MaxDoc); SortedSetDocValues dv = dvs[readerUpto]; dv.Document = docIDUpto; ordUpto = ordLength = 0; long ord; while ((ord = dv.NextOrd()) != SortedSetDocValues.NO_MORE_ORDS) { if (ordLength == ords.Length) { ords = ArrayUtil.Grow(ords, ordLength + 1); } ords[ordLength] = map.GetGlobalOrd(readerUpto, ord); ordLength++; } docIDUpto++; continue; } docIDUpto++; } }
private IEnumerable<long?> GetMergeSortedSetOrdsEnumerable(AtomicReader[] readers, SortedSetDocValues[] dvs, OrdinalMap map) { int readerUpto = -1; int docIDUpto = 0; AtomicReader currentReader = null; Bits currentLiveDocs = null; var ords = new long[8]; int ordUpto = 0; int ordLength = 0; while (true) { if (readerUpto == readers.Length) { yield break; } if (ordUpto < ordLength) { var value = ords[ordUpto]; ordUpto++; yield return value; continue; } if (currentReader == null || docIDUpto == currentReader.MaxDoc) { readerUpto++; if (readerUpto < readers.Length) { currentReader = readers[readerUpto]; currentLiveDocs = currentReader.LiveDocs; } docIDUpto = 0; continue; } if (currentLiveDocs == null || currentLiveDocs.Get(docIDUpto)) { Debug.Assert(docIDUpto < currentReader.MaxDoc); SortedSetDocValues dv = dvs[readerUpto]; dv.Document = docIDUpto; ordUpto = ordLength = 0; long ord; while ((ord = dv.NextOrd()) != SortedSetDocValues.NO_MORE_ORDS) { if (ordLength == ords.Length) { ords = ArrayUtil.Grow(ords, ordLength + 1); } ords[ordLength] = map.GetGlobalOrd(readerUpto, ord); ordLength++; } docIDUpto++; continue; } docIDUpto++; } }
private IEnumerable<long?> GetMergeSortedFieldDocToOrdEnumerable(AtomicReader[] readers, SortedDocValues[] dvs, OrdinalMap map) { int readerUpTo = -1; int docIDUpTo = 0; AtomicReader currentReader = null; Bits currentLiveDocs = null; while (true) { if (readerUpTo == readers.Length) { yield break; } if (currentReader == null || docIDUpTo == currentReader.MaxDoc) { readerUpTo++; if (readerUpTo < readers.Length) { currentReader = readers[readerUpTo]; currentLiveDocs = currentReader.LiveDocs; } docIDUpTo = 0; continue; } if (currentLiveDocs == null || currentLiveDocs.Get(docIDUpTo)) { int segOrd = dvs[readerUpTo].GetOrd(docIDUpTo); docIDUpTo++; yield return segOrd == -1 ? -1 : map.GetGlobalOrd(readerUpTo, segOrd); continue; } docIDUpTo++; } }