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/11/26 12:25:42 UTC
svn commit: r1039314 - in /lucene/dev/trunk/lucene/src:
java/org/apache/lucene/index/TermVectorsReader.java
java/org/apache/lucene/index/TermVectorsTermsWriter.java
test/org/apache/lucene/index/TestIndexWriter.java
Author: mikemccand
Date: Fri Nov 26 11:25:42 2010
New Revision: 1039314
URL: http://svn.apache.org/viewvc?rev=1039314&view=rev
Log:
LUCENE-2776: don't create term vectors files if no doc uses term vectors
Modified:
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
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=1039314&r1=1039313&r2=1039314&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 Fri Nov 26 11:25:42 2010
@@ -104,9 +104,10 @@ class TermVectorsReader implements Clone
assert numTotalDocs >= size + docStoreOffset: "numTotalDocs=" + numTotalDocs + " size=" + size + " docStoreOffset=" + docStoreOffset;
}
} else {
- // TODO: understand why FieldInfos.hasVectors() can
- // return true yet the term vectors files don't
- // exist...
+ // If all documents flushed in a segment had hit
+ // non-aborting exceptions, it's possible that
+ // FieldInfos.hasVectors returns true yet the term
+ // vector files don't exist.
format = 0;
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java?rev=1039314&r1=1039313&r2=1039314&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java Fri Nov 26 11:25:42 2010
@@ -50,12 +50,13 @@ final class TermVectorsTermsWriter exten
@Override
synchronized void flush(Map<TermsHashConsumerPerThread,Collection<TermsHashConsumerPerField>> threadsAndFields, final SegmentWriteState state) throws IOException {
- if (state.numDocsInStore > 0) {
- // It's possible that all documents seen in this segment
- // hit non-aborting exceptions, in which case we will
- // not have yet init'd the TermVectorsWriter:
- initTermVectorsWriter();
- }
+ // NOTE: it's possible that all documents seen in this segment
+ // hit non-aborting exceptions, in which case we will
+ // not have yet init'd the TermVectorsWriter. This is
+ // actually OK (unlike in the stored fields case)
+ // because, although IieldInfos.hasVectors() will return
+ // true, the TermVectorsReader gracefully handles
+ // non-existence of the term vectors files.
if (tvx != null) {
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1039314&r1=1039313&r2=1039314&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java Fri Nov 26 11:25:42 2010
@@ -2961,4 +2961,37 @@ public class TestIndexWriter extends Luc
w.close();
dir.close();
}
+
+ public void testNoUnwantedTVFiles() throws Exception {
+
+ Directory dir = newDirectory();
+ IndexWriter indexWriter = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setRAMBufferSizeMB(0.01));
+ ((LogMergePolicy) indexWriter.getMergePolicy()).setUseCompoundFile(false);
+
+ String BIG="alskjhlaksjghlaksjfhalksvjepgjioefgjnsdfjgefgjhelkgjhqewlrkhgwlekgrhwelkgjhwelkgrhwlkejg";
+ BIG=BIG+BIG+BIG+BIG;
+
+ for (int i=0; i<2; i++) {
+ Document doc = new Document();
+ doc.add(new Field("id", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
+ doc.add(new Field("str", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.NOT_ANALYZED));
+ doc.add(new Field("str2", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.ANALYZED));
+ doc.add(new Field("str3", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.ANALYZED_NO_NORMS));
+ indexWriter.addDocument(doc);
+ }
+
+ indexWriter.close();
+
+ _TestUtil.checkIndex(dir);
+
+ assertNoUnreferencedFiles(dir, "no tv files");
+ String[] files = dir.listAll();
+ for(String file : files) {
+ assertTrue(!file.endsWith(IndexFileNames.VECTORS_FIELDS_EXTENSION));
+ assertTrue(!file.endsWith(IndexFileNames.VECTORS_INDEX_EXTENSION));
+ assertTrue(!file.endsWith(IndexFileNames.VECTORS_DOCUMENTS_EXTENSION));
+ }
+
+ dir.close();
+ }
}