blob: 2882ebf91bae2e9a39161aaa9d2656679cc676f9 [file] [log] [blame]
Index: src/java/org/apache/lucene/index/SegmentMerger.java
===================================================================
--- src/java/org/apache/lucene/index/SegmentMerger.java (revision 320607)
+++ src/java/org/apache/lucene/index/SegmentMerger.java (working copy)
@@ -311,9 +311,9 @@
resetSkip();
for (int i = 0; i < n; i++) {
SegmentMergeInfo smi = smis[i];
- TermPositions postings = smi.postings;
+ TermPositions postings = smi.getPositions();
int base = smi.base;
- int[] docMap = smi.docMap;
+ int[] docMap = smi.getDocMap();
postings.seek(smi.termEnum);
while (postings.next()) {
int doc = postings.doc();
Index: src/java/org/apache/lucene/index/SegmentMergeInfo.java
===================================================================
--- src/java/org/apache/lucene/index/SegmentMergeInfo.java (revision 320607)
+++ src/java/org/apache/lucene/index/SegmentMergeInfo.java (working copy)
@@ -23,8 +23,8 @@
int base;
TermEnum termEnum;
IndexReader reader;
- TermPositions postings;
- int[] docMap = null; // maps around deleted docs
+ private TermPositions postings; // use getPositions()
+ private int[] docMap; // use getDocMap()
SegmentMergeInfo(int b, TermEnum te, IndexReader r)
throws IOException {
@@ -32,8 +32,11 @@
reader = r;
termEnum = te;
term = te.term();
- postings = reader.termPositions();
+ }
+ // maps around deleted docs
+ int[] getDocMap() {
+ if (docMap == null) {
// build array which maps document numbers around deletions
if (reader.hasDeletions()) {
int maxDoc = reader.maxDoc();
@@ -47,6 +50,15 @@
}
}
}
+ return docMap;
+ }
+
+ TermPositions getPositions() throws IOException {
+ if (postings == null) {
+ postings = reader.termPositions();
+ }
+ return postings;
+ }
final boolean next() throws IOException {
if (termEnum.next()) {
@@ -60,7 +72,9 @@
final void close() throws IOException {
termEnum.close();
+ if (postings != null) {
postings.close();
}
}
+}