You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2010/08/02 22:58:51 UTC
svn commit: r981687 - in
/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index:
FieldsReader.java SegmentMerger.java TermVectorsReader.java
Author: mikemccand
Date: Mon Aug 2 20:58:51 2010
New Revision: 981687
URL: http://svn.apache.org/viewvc?rev=981687&view=rev
Log:
revert 981659: apparently the code was not quite dead yet
Modified:
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java?rev=981687&r1=981686&r2=981687&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java Mon Aug 2 20:58:51 2010
@@ -186,6 +186,12 @@ final class FieldsReader implements Clon
indexStream.seek(FORMAT_SIZE + (docID + docStoreOffset) * 8L);
}
+ boolean canReadRawDocs() {
+ // Since we currently only support >3.0 format anymore, always return true!
+ // I leave this method in because it may help for later format changes.
+ return true;
+ }
+
final Document doc(int n, FieldSelector fieldSelector) throws CorruptIndexException, IOException {
seekIndex(n);
long position = indexStream.readLong();
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java?rev=981687&r1=981686&r2=981687&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java Mon Aug 2 20:58:51 2010
@@ -321,7 +321,7 @@ final class SegmentMerger {
FieldsReader matchingFieldsReader = null;
if (matchingSegmentReader != null) {
final FieldsReader fieldsReader = matchingSegmentReader.getFieldsReader();
- if (fieldsReader != null) {
+ if (fieldsReader != null && fieldsReader.canReadRawDocs()) {
matchingFieldsReader = fieldsReader;
}
}
@@ -453,7 +453,7 @@ final class SegmentMerger {
TermVectorsReader vectorsReader = matchingSegmentReader.getTermVectorsReaderOrig();
// If the TV* files are an older format then they cannot read raw docs:
- if (vectorsReader != null) {
+ if (vectorsReader != null && vectorsReader.canReadRawDocs()) {
matchingVectorsReader = vectorsReader;
}
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java?rev=981687&r1=981686&r2=981687&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java Mon Aug 2 20:58:51 2010
@@ -135,6 +135,10 @@ class TermVectorsReader implements Clone
tvx.seek((docNum + docStoreOffset) * 16L + FORMAT_SIZE);
}
+ boolean canReadRawDocs() {
+ return format >= FORMAT_UTF8_LENGTH_IN_BYTES;
+ }
+
/** Retrieve the length (in bytes) of the tvd and tvf
* entries for the next numDocs starting with
* startDocID. This is used for bulk copying when
@@ -149,6 +153,11 @@ class TermVectorsReader implements Clone
return;
}
+ // SegmentMerger calls canReadRawDocs() first and should
+ // not call us if that returns false.
+ if (format < FORMAT_UTF8_LENGTH_IN_BYTES)
+ throw new IllegalStateException("cannot read raw docs with older term vector formats");
+
seekTvx(startDocID);
long tvdPosition = tvx.readLong();