예제 #1
0
 //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
 //ORIGINAL LINE: SortingDocsEnum(int maxDoc, SortingDocsEnum reuse, final org.apache.lucene.index.DocsEnum in, boolean withFreqs, final Sorter.DocMap docMap) throws java.io.IOException
 //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
 internal SortingDocsEnum(int maxDoc, SortingDocsEnum reuse, DocsEnum @in, bool withFreqs, Sorter.DocMap docMap)
     : base(@in)
 {
     this.maxDoc = maxDoc;
       this.withFreqs = withFreqs;
       if (reuse != null)
       {
     if (reuse.maxDoc == maxDoc)
     {
       sorter = reuse.sorter;
     }
     else
     {
       sorter = new DocFreqSorter(maxDoc);
     }
     docs = reuse.docs;
     freqs = reuse.freqs; // maybe null
       }
       else
       {
     docs = new int[64];
     sorter = new DocFreqSorter(maxDoc);
       }
       docIt = -1;
       int i = 0;
       int doc;
       if (withFreqs)
       {
     if (freqs == null || freqs.Length < docs.Length)
     {
       freqs = new int[docs.Length];
     }
     while ((doc = @in.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
     {
       if (i >= docs.Length)
       {
     docs = ArrayUtil.grow(docs, docs.Length + 1);
     freqs = ArrayUtil.grow(freqs, freqs.Length + 1);
       }
       docs[i] = docMap.oldToNew(doc);
       freqs[i] = @in.freq();
       ++i;
     }
       }
       else
       {
     freqs = null;
     while ((doc = @in.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
     {
       if (i >= docs.Length)
       {
     docs = ArrayUtil.grow(docs, docs.Length + 1);
       }
       docs[i++] = docMap.oldToNew(doc);
     }
       }
       // TimSort can save much time compared to other sorts in case of
       // reverse sorting, or when sorting a concatenation of sorted readers
       sorter.reset(docs, freqs);
       sorter.sort(0, i);
       upto = i;
 }
예제 #2
0
 //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
 //ORIGINAL LINE: SortingDocsAndPositionsEnum(int maxDoc, SortingDocsAndPositionsEnum reuse, final org.apache.lucene.index.DocsAndPositionsEnum in, Sorter.DocMap docMap, boolean storeOffsets) throws java.io.IOException
 //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
 internal SortingDocsAndPositionsEnum(int maxDoc, SortingDocsAndPositionsEnum reuse, DocsAndPositionsEnum @in, Sorter.DocMap docMap, bool storeOffsets)
     : base(@in)
 {
     this.maxDoc = maxDoc;
       this.storeOffsets = storeOffsets;
       if (reuse != null)
       {
     docs = reuse.docs;
     offsets = reuse.offsets;
     payload = reuse.payload;
     file = reuse.file;
     if (reuse.maxDoc == maxDoc)
     {
       sorter = reuse.sorter;
     }
     else
     {
       sorter = new DocOffsetSorter(maxDoc);
     }
       }
       else
       {
     docs = new int[32];
     offsets = new long[32];
     payload = new BytesRef(32);
     file = new RAMFile();
     sorter = new DocOffsetSorter(maxDoc);
       }
     //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
     //ORIGINAL LINE: final org.apache.lucene.store.IndexOutput out = new org.apache.lucene.store.RAMOutputStream(file);
       IndexOutput @out = new RAMOutputStream(file);
       int doc;
       int i = 0;
       while ((doc = @in.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
       {
     if (i == docs.Length)
     {
     //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
     //ORIGINAL LINE: final int newLength = org.apache.lucene.util.ArrayUtil.oversize(i + 1, 4);
       int newLength = ArrayUtil.oversize(i + 1, 4);
       docs = Arrays.copyOf(docs, newLength);
       offsets = Arrays.copyOf(offsets, newLength);
     }
     docs[i] = docMap.oldToNew(doc);
     offsets[i] = @out.FilePointer;
     addPositions(@in, @out);
     i++;
       }
       upto = i;
       sorter.reset(docs, offsets);
       sorter.sort(0, upto);
       @out.close();
       this.postingInput = new RAMInputStream("", file);
 }