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/06/02 11:41:36 UTC
svn commit: r950458 - in /lucene/dev/trunk/lucene: ./
src/java/org/apache/lucene/index/ src/test/org/apache/lucene/index/
Author: mikemccand
Date: Wed Jun 2 09:41:35 2010
New Revision: 950458
URL: http://svn.apache.org/viewvc?rev=950458&view=rev
Log:
LUCENE-2356: allow setting termsIndexDivisor for all readers opened by IW
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=950458&r1=950457&r2=950458&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Wed Jun 2 09:41:35 2010
@@ -106,6 +106,11 @@ API Changes
commit points when they are not needed anymore (instead of waiting for the
next commit). (Shai Erera)
+* LUCENE-2356: Add IndexWriterConfig.set/getReaderTermIndexDivisor, to
+ set what IndexWriter passes for termsaIndexDivisor to the readers it
+ opens internally when apply deletions or creating a near-real-time
+ reader. (Earwin Burrfoot via Mike McCandless)
+
New features
* LUCENE-1606, LUCENE-2089: Adds AutomatonQuery, a MultiTermQuery that
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=950458&r1=950457&r2=950458&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java Wed Jun 2 09:41:35 2010
@@ -382,7 +382,7 @@ public class IndexWriter implements Clos
* @throws IOException
*/
public IndexReader getReader() throws IOException {
- return getReader(IndexReader.DEFAULT_TERMS_INDEX_DIVISOR);
+ return getReader(config.getReaderTermsIndexDivisor());
}
/** Expert: like {@link #getReader}, except you can
@@ -603,8 +603,9 @@ public class IndexWriter implements Clos
* @throws IOException
*/
public synchronized SegmentReader get(SegmentInfo info, boolean doOpenStores) throws IOException {
- return get(info, doOpenStores, BufferedIndexInput.BUFFER_SIZE, IndexReader.DEFAULT_TERMS_INDEX_DIVISOR);
+ return get(info, doOpenStores, BufferedIndexInput.BUFFER_SIZE, config.getReaderTermsIndexDivisor());
}
+
/**
* Obtain a SegmentReader from the readerPool. The reader
* must be returned by calling {@link #release(SegmentReader)}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java?rev=950458&r1=950457&r2=950458&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java Wed Jun 2 09:41:35 2010
@@ -91,6 +91,9 @@ public final class IndexWriterConfig imp
/** Default setting for {@link #setReaderPooling}. */
public final static boolean DEFAULT_READER_POOLING = false;
+ /** Default value is 1. Change using {@link #setReaderTermsIndexDivisor(int)}. */
+ public static final int DEFAULT_READER_TERMS_INDEX_DIVISOR = IndexReader.DEFAULT_TERMS_INDEX_DIVISOR;
+
/**
* Sets the default (for any instance) maximum time to wait for a write lock
* (in milliseconds).
@@ -127,6 +130,7 @@ public final class IndexWriterConfig imp
private MergePolicy mergePolicy;
private int maxThreadStates;
private boolean readerPooling;
+ private int readerTermsIndexDivisor;
// required for clone
private Version matchVersion;
@@ -158,6 +162,7 @@ public final class IndexWriterConfig imp
mergePolicy = new LogByteSizeMergePolicy();
maxThreadStates = DEFAULT_MAX_THREAD_STATES;
readerPooling = DEFAULT_READER_POOLING;
+ readerTermsIndexDivisor = DEFAULT_READER_TERMS_INDEX_DIVISOR;
}
@Override
@@ -583,6 +588,23 @@ public final class IndexWriterConfig imp
IndexingChain getIndexingChain() {
return indexingChain;
}
+
+ /** Sets the term index divisor passed to any readers that
+ * IndexWriter opens, for example when apply deletes or
+ * creating a near-real-time reader in {@link
+ * IndexWriter#getReader}. */
+ public IndexWriterConfig setReaderTermsIndexDivisor(int divisor) {
+ if (divisor <= 0) {
+ throw new IllegalArgumentException("divisor must be >= 1 (got " + divisor + ")");
+ }
+ readerTermsIndexDivisor = divisor;
+ return this;
+ }
+
+ /** @see #setReaderTermsIndexDivisor() */
+ public int getReaderTermsIndexDivisor() {
+ return readerTermsIndexDivisor;
+ }
@Override
public String toString() {
@@ -606,6 +628,7 @@ public final class IndexWriterConfig imp
sb.append("mergePolicy=").append(mergePolicy).append("\n");
sb.append("maxThreadStates=").append(maxThreadStates).append("\n");
sb.append("readerPooling=").append(readerPooling).append("\n");
+ sb.append("readerTermsIndexDivisor=").append(readerTermsIndexDivisor).append("\n");
return sb.toString();
}
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java?rev=950458&r1=950457&r2=950458&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java Wed Jun 2 09:41:35 2010
@@ -84,6 +84,7 @@ public class TestIndexWriterConfig exten
assertNull(conf.getMergedSegmentWarmer());
assertEquals(IndexWriterConfig.DEFAULT_CODEC_PROVIDER, CodecProvider.getDefault());
assertEquals(IndexWriterConfig.DEFAULT_MAX_THREAD_STATES, conf.getMaxThreadStates());
+ assertEquals(IndexWriterConfig.DEFAULT_READER_TERMS_INDEX_DIVISOR, conf.getReaderTermsIndexDivisor());
assertEquals(LogByteSizeMergePolicy.class, conf.getMergePolicy().getClass());
// Sanity check - validate that all getters are covered.
@@ -107,6 +108,7 @@ public class TestIndexWriterConfig exten
getters.add("getMergePolicy");
getters.add("getMaxThreadStates");
getters.add("getReaderPooling");
+ getters.add("getReaderTermsIndexDivisor");
for (Method m : IndexWriterConfig.class.getDeclaredMethods()) {
if (m.getDeclaringClass() == IndexWriterConfig.class && m.getName().startsWith("get")) {
assertTrue("method " + m.getName() + " is not tested for defaults", getters.contains(m.getName()));
@@ -140,6 +142,7 @@ public class TestIndexWriterConfig exten
assertEquals(16.0, IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB, 0.0);
assertEquals(false, IndexWriterConfig.DEFAULT_READER_POOLING);
assertEquals(8, IndexWriterConfig.DEFAULT_MAX_THREAD_STATES);
+ assertEquals(IndexReader.DEFAULT_TERMS_INDEX_DIVISOR, IndexWriterConfig.DEFAULT_READER_TERMS_INDEX_DIVISOR);
}
@Test
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java?rev=950458&r1=950457&r2=950458&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java Wed Jun 2 09:41:35 2010
@@ -214,7 +214,7 @@ public class TestIndexWriterReader exten
boolean optimize = true;
Directory dir1 = new MockRAMDirectory();
- IndexWriter writer = new IndexWriter(dir1, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
+ IndexWriter writer = new IndexWriter(dir1, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setReaderTermsIndexDivisor(2));
writer.setInfoStream(infoStream);
// create the index
createIndexNoClose(!optimize, "index1", writer);