You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/11/10 17:53:05 UTC
svn commit: r1200423 -
/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
Author: rmuir
Date: Thu Nov 10 16:53:05 2011
New Revision: 1200423
URL: http://svn.apache.org/viewvc?rev=1200423&view=rev
Log:
LUCENE-2621: add default termvectors merge() implementation
Modified:
lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java?rev=1200423&r1=1200422&r2=1200423&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java Thu Nov 10 16:53:05 2011
@@ -20,7 +20,9 @@ package org.apache.lucene.index.codecs;
import java.io.Closeable;
import java.io.IOException;
+import org.apache.lucene.index.MergeState;
import org.apache.lucene.index.TermFreqVector;
+import org.apache.lucene.util.Bits;
public abstract class TermVectorsWriter implements Closeable {
@@ -32,6 +34,35 @@ public abstract class TermVectorsWriter
* in LUCENE-1282. */
public abstract void finish(int numDocs) throws IOException;
+ /** Merges in the stored fields from the readers in
+ * <code>mergeState</code>. The default implementation skips
+ * over deleted documents, and uses XXX, XXX, and XXX
+ * returning the number of documents that were written.
+ * Implementations can override this method for more sophisticated
+ * merging (bulk-byte copying, etc). */
+ // nocommit: test that I work
+ public int merge(MergeState mergeState) throws IOException {
+ int docCount = 0;
+ for (MergeState.IndexReaderAndLiveDocs reader : mergeState.readers) {
+ final int maxDoc = reader.reader.maxDoc();
+ final Bits liveDocs = reader.liveDocs;
+ for (int i = 0; i < maxDoc; i++) {
+ if (liveDocs != null && !liveDocs.get(i)) {
+ // skip deleted docs
+ continue;
+ }
+ // NOTE: it's very important to first assign to vectors then pass it to
+ // termVectorsWriter.addAllDocVectors; see LUCENE-1282
+ TermFreqVector[] vectors = reader.reader.getTermFreqVectors(i);
+ addAllDocVectors(vectors);
+ docCount++;
+ mergeState.checkAbort.work(300);
+ }
+ }
+ finish(docCount);
+ return docCount;
+ }
+
// nocommit: this should be a sugar method only that consumes the normal api (once we have one)
public abstract void addAllDocVectors(TermFreqVector[] vectors) throws IOException;