for(int i=0;i<mergeState.storedFieldsReaders.length;i++) { StoredFieldsReader storedFieldsReader = mergeState.storedFieldsReaders[i]; storedFieldsReader.checkIntegrity(); subs.add(new StoredFieldsMergeSub(new MergeVisitor(mergeState, i), mergeState.docMaps[i], storedFieldsReader, mergeState.maxDocs[i])); sub.reader.visitDocument(sub.docID, sub.visitor); finishDocument(); docCount++;
@Override protected StoredFieldsReader initialValue() { return fieldsReaderOrig.clone(); } };
@Override public long ramBytesUsed() { return fieldsReader.ramBytesUsed(); }
StoredFieldsReader storedFields = reader.getFieldsReader().getMergeInstance(); for (int j = 0; j < reader.maxDoc(); ++j) { storedFields.visitDocument(j, visitor); Document doc = visitor.getDocument(); if (liveDocs == null || liveDocs.get(j)) {
@Override void flush(SegmentWriteState state, Sorter.DocMap sortMap) throws IOException { super.flush(state, sortMap); if (sortMap == null) { // we're lucky the index is already sorted, just rename the temporary file and return for (Map.Entry<String, String> entry : tmpDirectory.getTemporaryFiles().entrySet()) { tmpDirectory.rename(entry.getValue(), entry.getKey()); } return; } StoredFieldsReader reader = docWriter.codec.storedFieldsFormat() .fieldsReader(tmpDirectory, state.segmentInfo, state.fieldInfos, IOContext.DEFAULT); StoredFieldsReader mergeReader = reader.getMergeInstance(); StoredFieldsWriter sortWriter = docWriter.codec.storedFieldsFormat() .fieldsWriter(state.directory, state.segmentInfo, IOContext.DEFAULT); try { reader.checkIntegrity(); CopyVisitor visitor = new CopyVisitor(sortWriter); for (int docID = 0; docID < state.segmentInfo.maxDoc(); docID++) { sortWriter.startDocument(); mergeReader.visitDocument(sortMap.newToOld(docID), visitor); sortWriter.finishDocument(); } sortWriter.finish(state.fieldInfos, state.segmentInfo.maxDoc()); } finally { IOUtils.close(reader, sortWriter); IOUtils.deleteFiles(tmpDirectory, tmpDirectory.getTemporaryFiles().values()); } }
@Override public final void document(int docID, StoredFieldVisitor visitor) throws IOException { checkBounds(docID); getFieldsReader().visitDocument(docID, visitor); }
@Override public void checkIntegrity() throws IOException { fieldsReader.checkIntegrity(); } }
store = store.getMergeInstance();
@Override public void close() throws IOException { fieldsReader.close(); }
@Override void flush(SegmentWriteState state, Sorter.DocMap sortMap) throws IOException { super.flush(state, sortMap); if (sortMap == null) { // we're lucky the index is already sorted, just rename the temporary file and return for (Map.Entry<String, String> entry : tmpDirectory.getTemporaryFiles().entrySet()) { tmpDirectory.rename(entry.getValue(), entry.getKey()); } return; } StoredFieldsReader reader = docWriter.codec.storedFieldsFormat() .fieldsReader(tmpDirectory, state.segmentInfo, state.fieldInfos, IOContext.DEFAULT); StoredFieldsReader mergeReader = reader.getMergeInstance(); StoredFieldsWriter sortWriter = docWriter.codec.storedFieldsFormat() .fieldsWriter(state.directory, state.segmentInfo, IOContext.DEFAULT); try { reader.checkIntegrity(); CopyVisitor visitor = new CopyVisitor(sortWriter); for (int docID = 0; docID < state.segmentInfo.maxDoc(); docID++) { sortWriter.startDocument(); mergeReader.visitDocument(sortMap.newToOld(docID), visitor); sortWriter.finishDocument(); } sortWriter.finish(state.fieldInfos, state.segmentInfo.maxDoc()); } finally { IOUtils.close(reader, sortWriter); IOUtils.deleteFiles(tmpDirectory, tmpDirectory.getTemporaryFiles().values()); } }
StoredFieldsReader storedFields = reader.getFieldsReader().getMergeInstance(); for (int j = 0; j < reader.maxDoc(); ++j) { storedFields.visitDocument(j, visitor); Document doc = visitor.getDocument(); if (liveDocs == null || liveDocs.get(j)) {
@Override public void document(int docID, StoredFieldVisitor visitor) throws IOException { ensureOpen(); checkBounds(docID); store.visitDocument(docID, visitor); }
getFieldsReader().checkIntegrity();
storedFieldsReaders[i] = storedFieldsReaders[i].getMergeInstance();
@Override public void close() throws IOException { fieldsReader.close(); }
storedFieldsReader.checkIntegrity(); storedFieldsReader.visitDocument(docID, visitor); finishDocument(); ++docCount;
StoredFieldsReader storedFields = reader.getFieldsReader().getMergeInstance(); for (int j = 0; j < reader.maxDoc(); ++j) { storedFields.visitDocument(j, visitor); Document doc = visitor.getDocument(); if (liveDocs == null || liveDocs.get(j)) {
@Override public void visitDocument(int docID, StoredFieldVisitor visitor) throws IOException { fieldsReader.visitDocument(docID, visitor); }
@Override public StoredFieldsReader clone() { return fieldsReader.clone(); }
@Override public void checkIntegrity() throws IOException { fieldsReader.checkIntegrity(); } }