You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2010/11/17 16:43:10 UTC
svn commit: r1036080 [3/4] - in /lucene/dev/branches/docvalues: ./ lucene/
lucene/contrib/ lucene/contrib/highlighter/src/test/
lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/
lucene/contrib/misc/src/java/org/apache/lucene/in...
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java Wed Nov 17 15:43:06 2010
@@ -28,7 +28,10 @@ import org.apache.lucene.index.CheckInde
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.index.codecs.Codec;
import org.apache.lucene.index.codecs.CodecProvider;
+import org.apache.lucene.index.codecs.mockintblock.MockFixedIntBlockCodec;
+import org.apache.lucene.index.codecs.mockintblock.MockVariableIntBlockCodec;
import org.apache.lucene.index.codecs.mocksep.MockSepCodec;
+import org.apache.lucene.index.codecs.pulsing.PulsingCodec;
import org.apache.lucene.index.codecs.simpletext.SimpleTextCodec;
import org.apache.lucene.index.codecs.standard.StandardCodec;
import org.apache.lucene.search.IndexSearcher;
@@ -255,15 +258,16 @@ public class TestPerFieldCodecSupport ex
final int docsPerRound = 97;
for (int i = 0; i < 5; i++) {
CodecProvider provider = new CodecProvider();
- provider.register(new StandardCodec());
- provider.register(new SimpleTextCodec());
- // provider.register(new MockSepCodec()); // TODO enable once we have
- // files per codec
- // provider.register(new PulsingCodec());
-
+ Codec[] codecs = new Codec[] { new StandardCodec(),
+ new SimpleTextCodec(), new MockSepCodec(),
+ new PulsingCodec(1 + random.nextInt(10)),
+ new MockVariableIntBlockCodec(1 + random.nextInt(10)),
+ new MockFixedIntBlockCodec(1 + random.nextInt(10)) };
+ for (Codec codec : codecs) {
+ provider.register(codec);
+ }
for (int j = 0; j < 30 * RANDOM_MULTIPLIER; j++) {
- provider.setFieldCodec("" + j, random.nextBoolean() ? "SimpleText"
- : "Standard"); // TODO enable other codecs once possible
+ provider.setFieldCodec("" + j, codecs[random.nextInt(codecs.length)].name);
}
IndexWriterConfig config = newIndexWriterConfig(random,
TEST_VERSION_CURRENT, new MockAnalyzer());
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTermVectorsWriter.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTermVectorsWriter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTermVectorsWriter.java Wed Nov 17 15:43:06 2010
@@ -297,7 +297,7 @@ public class TestTermVectorsWriter exten
.setMergeScheduler(new SerialMergeScheduler()).setMergePolicy(
new LogDocMergePolicy()));
- Directory[] indexDirs = {new MockDirectoryWrapper(new RAMDirectory(dir))};
+ Directory[] indexDirs = {new MockDirectoryWrapper(random, new RAMDirectory(dir))};
writer.addIndexes(indexDirs);
writer.optimize();
writer.close();
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java Wed Nov 17 15:43:06 2010
@@ -41,12 +41,10 @@ public class TestThreadedOptimize extend
//private final static int NUM_THREADS = 5;
private final static int NUM_ITER = 1;
- //private final static int NUM_ITER = 10;
private final static int NUM_ITER2 = 1;
- //private final static int NUM_ITER2 = 5;
- private boolean failed;
+ private volatile boolean failed;
private void setFailed() {
failed = true;
@@ -116,15 +114,16 @@ public class TestThreadedOptimize extend
// System.out.println("TEST: now index=" + writer.segString());
- assertEquals(expectedDocCount, writer.maxDoc());
+ assertEquals("index=" + writer.segString() + " numDocs" + writer.numDocs() + " maxDoc=" + writer.maxDoc() + " config=" + writer.getConfig(), expectedDocCount, writer.numDocs());
+ assertEquals("index=" + writer.segString() + " numDocs" + writer.numDocs() + " maxDoc=" + writer.maxDoc() + " config=" + writer.getConfig(), expectedDocCount, writer.maxDoc());
writer.close();
writer = new IndexWriter(directory, newIndexWriterConfig(
TEST_VERSION_CURRENT, ANALYZER).setOpenMode(
OpenMode.APPEND).setMaxBufferedDocs(2));
-
+
IndexReader reader = IndexReader.open(directory, true);
- assertTrue(reader.isOptimized());
+ assertTrue("reader=" + reader, reader.isOptimized());
assertEquals(expectedDocCount, reader.numDocs());
reader.close();
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTransactions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTransactions.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTransactions.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTransactions.java Wed Nov 17 15:43:06 2010
@@ -193,8 +193,8 @@ public class TestTransactions extends Lu
public void testTransactions() throws Throwable {
// we cant use non-ramdir on windows, because this test needs to double-write.
- MockDirectoryWrapper dir1 = new MockDirectoryWrapper(new RAMDirectory());
- MockDirectoryWrapper dir2 = new MockDirectoryWrapper(new RAMDirectory());
+ MockDirectoryWrapper dir1 = new MockDirectoryWrapper(random, new RAMDirectory());
+ MockDirectoryWrapper dir2 = new MockDirectoryWrapper(random, new RAMDirectory());
dir1.setPreventDoubleWrite(false);
dir2.setPreventDoubleWrite(false);
dir1.failOn(new RandomFailure());
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockFixedIntBlockCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockFixedIntBlockCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockFixedIntBlockCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockFixedIntBlockCodec.java Wed Nov 17 15:43:06 2010
@@ -139,7 +139,7 @@ public class MockFixedIntBlockCodec exte
PostingsReaderBase postingsReader = new SepPostingsReaderImpl(state.dir,
state.segmentInfo,
state.readBufferSize,
- new MockIntFactory());
+ new MockIntFactory(), state.codecId);
TermsIndexReaderBase indexReader;
boolean success = false;
@@ -148,7 +148,7 @@ public class MockFixedIntBlockCodec exte
state.fieldInfos,
state.segmentInfo.name,
state.termsIndexDivisor,
- BytesRef.getUTF8SortedAsUnicodeComparator());
+ BytesRef.getUTF8SortedAsUnicodeComparator(), state.codecId);
success = true;
} finally {
if (!success) {
@@ -165,7 +165,8 @@ public class MockFixedIntBlockCodec exte
postingsReader,
state.readBufferSize,
BytesRef.getUTF8SortedAsUnicodeComparator(),
- StandardCodec.TERMS_CACHE_SIZE);
+ StandardCodec.TERMS_CACHE_SIZE,
+ state.codecId);
success = true;
return ret;
} finally {
@@ -180,10 +181,10 @@ public class MockFixedIntBlockCodec exte
}
@Override
- public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files) {
- SepPostingsReaderImpl.files(segmentInfo, files);
- PrefixCodedTermsReader.files(dir, segmentInfo, files);
- FixedGapTermsIndexReader.files(dir, segmentInfo, files);
+ public void files(Directory dir, SegmentInfo segmentInfo, String codecId, Set<String> files) {
+ SepPostingsReaderImpl.files(segmentInfo, codecId, files);
+ PrefixCodedTermsReader.files(dir, segmentInfo, codecId, files);
+ FixedGapTermsIndexReader.files(dir, segmentInfo, codecId, files);
}
@Override
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockVariableIntBlockCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockVariableIntBlockCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockVariableIntBlockCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockVariableIntBlockCodec.java Wed Nov 17 15:43:06 2010
@@ -162,7 +162,7 @@ public class MockVariableIntBlockCodec e
PostingsReaderBase postingsReader = new SepPostingsReaderImpl(state.dir,
state.segmentInfo,
state.readBufferSize,
- new MockIntFactory());
+ new MockIntFactory(), state.codecId);
TermsIndexReaderBase indexReader;
boolean success = false;
@@ -171,7 +171,8 @@ public class MockVariableIntBlockCodec e
state.fieldInfos,
state.segmentInfo.name,
state.termsIndexDivisor,
- BytesRef.getUTF8SortedAsUnicodeComparator());
+ BytesRef.getUTF8SortedAsUnicodeComparator(),
+ state.codecId);
success = true;
} finally {
if (!success) {
@@ -188,7 +189,8 @@ public class MockVariableIntBlockCodec e
postingsReader,
state.readBufferSize,
BytesRef.getUTF8SortedAsUnicodeComparator(),
- StandardCodec.TERMS_CACHE_SIZE);
+ StandardCodec.TERMS_CACHE_SIZE,
+ state.codecId);
success = true;
return ret;
} finally {
@@ -203,10 +205,10 @@ public class MockVariableIntBlockCodec e
}
@Override
- public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files) {
- SepPostingsReaderImpl.files(segmentInfo, files);
- PrefixCodedTermsReader.files(dir, segmentInfo, files);
- FixedGapTermsIndexReader.files(dir, segmentInfo, files);
+ public void files(Directory dir, SegmentInfo segmentInfo, String codecId, Set<String> files) {
+ SepPostingsReaderImpl.files(segmentInfo, codecId, files);
+ PrefixCodedTermsReader.files(dir, segmentInfo, codecId, files);
+ FixedGapTermsIndexReader.files(dir, segmentInfo, codecId, files);
}
@Override
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mocksep/MockSepCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mocksep/MockSepCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mocksep/MockSepCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mocksep/MockSepCodec.java Wed Nov 17 15:43:06 2010
@@ -87,7 +87,8 @@ public class MockSepCodec extends Codec
@Override
public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException {
- PostingsReaderBase postingsReader = new SepPostingsReaderImpl(state.dir, state.segmentInfo, state.readBufferSize, new MockSingleIntFactory());
+ PostingsReaderBase postingsReader = new SepPostingsReaderImpl(state.dir, state.segmentInfo,
+ state.readBufferSize, new MockSingleIntFactory(), state.codecId);
TermsIndexReaderBase indexReader;
boolean success = false;
@@ -96,7 +97,8 @@ public class MockSepCodec extends Codec
state.fieldInfos,
state.segmentInfo.name,
state.termsIndexDivisor,
- BytesRef.getUTF8SortedAsUnicodeComparator());
+ BytesRef.getUTF8SortedAsUnicodeComparator(),
+ state.codecId);
success = true;
} finally {
if (!success) {
@@ -113,7 +115,8 @@ public class MockSepCodec extends Codec
postingsReader,
state.readBufferSize,
BytesRef.getUTF8SortedAsUnicodeComparator(),
- StandardCodec.TERMS_CACHE_SIZE);
+ StandardCodec.TERMS_CACHE_SIZE,
+ state.codecId);
success = true;
return ret;
} finally {
@@ -128,10 +131,10 @@ public class MockSepCodec extends Codec
}
@Override
- public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files) {
- SepPostingsReaderImpl.files(segmentInfo, files);
- PrefixCodedTermsReader.files(dir, segmentInfo, files);
- FixedGapTermsIndexReader.files(dir, segmentInfo, files);
+ public void files(Directory dir, SegmentInfo segmentInfo, String codecId, Set<String> files) {
+ SepPostingsReaderImpl.files(segmentInfo, codecId, files);
+ PrefixCodedTermsReader.files(dir, segmentInfo, codecId, files);
+ FixedGapTermsIndexReader.files(dir, segmentInfo, codecId, files);
}
@Override
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/CheckHits.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/CheckHits.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/CheckHits.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/CheckHits.java Wed Nov 17 15:43:06 2010
@@ -20,6 +20,7 @@ package org.apache.lucene.search;
import java.io.IOException;
import java.util.Set;
import java.util.TreeSet;
+import java.util.Random;
import junit.framework.Assert;
@@ -79,11 +80,11 @@ public class CheckHits {
* @see Searcher#search(Query,Collector)
* @see #checkHits
*/
- public static void checkHitCollector(Query query, String defaultFieldName,
+ public static void checkHitCollector(Random random, Query query, String defaultFieldName,
Searcher searcher, int[] results)
throws IOException {
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random,query,searcher);
Set<Integer> correct = new TreeSet<Integer>();
for (int i = 0; i < results.length; i++) {
@@ -98,7 +99,7 @@ public class CheckHits {
for (int i = -1; i < 2; i++) {
actual.clear();
- QueryUtils.wrapSearcher(searcher, i).search(query, c);
+ QueryUtils.wrapSearcher(random, searcher, i).search(query, c);
Assert.assertEquals("Wrap Searcher " + i + ": " +
query.toString(defaultFieldName),
correct, actual);
@@ -109,7 +110,7 @@ public class CheckHits {
for (int i = -1; i < 2; i++) {
actual.clear();
QueryUtils.wrapUnderlyingReader
- ((IndexSearcher)searcher, i).search(query, c);
+ (random, (IndexSearcher)searcher, i).search(query, c);
Assert.assertEquals("Wrap Reader " + i + ": " +
query.toString(defaultFieldName),
correct, actual);
@@ -153,6 +154,7 @@ public class CheckHits {
* @see #checkHitCollector
*/
public static void checkHits(
+ Random random,
Query query,
String defaultFieldName,
Searcher searcher,
@@ -173,7 +175,7 @@ public class CheckHits {
Assert.assertEquals(query.toString(defaultFieldName), correct, actual);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
/** Tests that a Hits has an expected order of documents */
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/QueryUtils.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/QueryUtils.java Wed Nov 17 15:43:06 2010
@@ -5,6 +5,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.util.Random;
import junit.framework.Assert;
@@ -99,10 +100,10 @@ public class QueryUtils {
* @see #checkSerialization
* @see #checkEqual
*/
- public static void check(Query q1, Searcher s) {
- check(q1, s, true);
+ public static void check(Random random, Query q1, Searcher s) {
+ check(random, q1, s, true);
}
- private static void check(Query q1, Searcher s, boolean wrap) {
+ private static void check(Random random, Query q1, Searcher s, boolean wrap) {
try {
check(q1);
if (s!=null) {
@@ -111,15 +112,15 @@ public class QueryUtils {
checkFirstSkipTo(q1,is);
checkSkipTo(q1,is);
if (wrap) {
- check(q1, wrapUnderlyingReader(is, -1), false);
- check(q1, wrapUnderlyingReader(is, 0), false);
- check(q1, wrapUnderlyingReader(is, +1), false);
+ check(random, q1, wrapUnderlyingReader(random, is, -1), false);
+ check(random, q1, wrapUnderlyingReader(random, is, 0), false);
+ check(random, q1, wrapUnderlyingReader(random, is, +1), false);
}
}
if (wrap) {
- check(q1, wrapSearcher(s, -1), false);
- check(q1, wrapSearcher(s, 0), false);
- check(q1, wrapSearcher(s, +1), false);
+ check(random,q1, wrapSearcher(random, s, -1), false);
+ check(random,q1, wrapSearcher(random, s, 0), false);
+ check(random,q1, wrapSearcher(random, s, +1), false);
}
checkExplanations(q1,s);
checkSerialization(q1,s);
@@ -142,7 +143,7 @@ public class QueryUtils {
* @param s the searcher to wrap
* @param edge if negative, s will be the first sub; if 0, s will be in the middle, if positive s will be the last sub
*/
- public static IndexSearcher wrapUnderlyingReader(final IndexSearcher s, final int edge)
+ public static IndexSearcher wrapUnderlyingReader(Random random, final IndexSearcher s, final int edge)
throws IOException {
IndexReader r = s.getIndexReader();
@@ -150,19 +151,19 @@ public class QueryUtils {
// we can't put deleted docs before the nested reader, because
// it will throw off the docIds
IndexReader[] readers = new IndexReader[] {
- edge < 0 ? r : IndexReader.open(makeEmptyIndex(0), true),
- IndexReader.open(makeEmptyIndex(0), true),
+ edge < 0 ? r : IndexReader.open(makeEmptyIndex(random, 0), true),
+ IndexReader.open(makeEmptyIndex(random, 0), true),
new MultiReader(new IndexReader[] {
- IndexReader.open(makeEmptyIndex(edge < 0 ? 4 : 0), true),
- IndexReader.open(makeEmptyIndex(0), true),
- 0 == edge ? r : IndexReader.open(makeEmptyIndex(0), true)
+ IndexReader.open(makeEmptyIndex(random, edge < 0 ? 4 : 0), true),
+ IndexReader.open(makeEmptyIndex(random, 0), true),
+ 0 == edge ? r : IndexReader.open(makeEmptyIndex(random, 0), true)
}),
- IndexReader.open(makeEmptyIndex(0 < edge ? 0 : 7), true),
- IndexReader.open(makeEmptyIndex(0), true),
+ IndexReader.open(makeEmptyIndex(random, 0 < edge ? 0 : 7), true),
+ IndexReader.open(makeEmptyIndex(random, 0), true),
new MultiReader(new IndexReader[] {
- IndexReader.open(makeEmptyIndex(0 < edge ? 0 : 5), true),
- IndexReader.open(makeEmptyIndex(0), true),
- 0 < edge ? r : IndexReader.open(makeEmptyIndex(0), true)
+ IndexReader.open(makeEmptyIndex(random, 0 < edge ? 0 : 5), true),
+ IndexReader.open(makeEmptyIndex(random, 0), true),
+ 0 < edge ? r : IndexReader.open(makeEmptyIndex(random, 0), true)
})
};
IndexSearcher out = new IndexSearcher(new MultiReader(readers));
@@ -178,24 +179,24 @@ public class QueryUtils {
* @param s the Searcher to wrap
* @param edge if negative, s will be the first sub; if 0, s will be in hte middle, if positive s will be the last sub
*/
- public static MultiSearcher wrapSearcher(final Searcher s, final int edge)
+ public static MultiSearcher wrapSearcher(Random random, final Searcher s, final int edge)
throws IOException {
// we can't put deleted docs before the nested reader, because
// it will through off the docIds
Searcher[] searchers = new Searcher[] {
- edge < 0 ? s : new IndexSearcher(makeEmptyIndex(0), true),
+ edge < 0 ? s : new IndexSearcher(makeEmptyIndex(random, 0), true),
new MultiSearcher(new Searcher[] {
- new IndexSearcher(makeEmptyIndex(edge < 0 ? 65 : 0), true),
- new IndexSearcher(makeEmptyIndex(0), true),
- 0 == edge ? s : new IndexSearcher(makeEmptyIndex(0), true)
+ new IndexSearcher(makeEmptyIndex(random, edge < 0 ? 65 : 0), true),
+ new IndexSearcher(makeEmptyIndex(random, 0), true),
+ 0 == edge ? s : new IndexSearcher(makeEmptyIndex(random, 0), true)
}),
- new IndexSearcher(makeEmptyIndex(0 < edge ? 0 : 3), true),
- new IndexSearcher(makeEmptyIndex(0), true),
+ new IndexSearcher(makeEmptyIndex(random, 0 < edge ? 0 : 3), true),
+ new IndexSearcher(makeEmptyIndex(random, 0), true),
new MultiSearcher(new Searcher[] {
- new IndexSearcher(makeEmptyIndex(0 < edge ? 0 : 5), true),
- new IndexSearcher(makeEmptyIndex(0), true),
- 0 < edge ? s : new IndexSearcher(makeEmptyIndex(0), true)
+ new IndexSearcher(makeEmptyIndex(random, 0 < edge ? 0 : 5), true),
+ new IndexSearcher(makeEmptyIndex(random, 0), true),
+ 0 < edge ? s : new IndexSearcher(makeEmptyIndex(random, 0), true)
})
};
MultiSearcher out = new MultiSearcher(searchers);
@@ -203,9 +204,9 @@ public class QueryUtils {
return out;
}
- private static Directory makeEmptyIndex(final int numDeletedDocs)
+ private static Directory makeEmptyIndex(Random random, final int numDeletedDocs)
throws IOException {
- Directory d = new MockDirectoryWrapper(new RAMDirectory());
+ Directory d = new MockDirectoryWrapper(random, new RAMDirectory());
IndexWriter w = new IndexWriter(d, new IndexWriterConfig(
TEST_VERSION_CURRENT, new MockAnalyzer()));
for (int i = 0; i < numDeletedDocs; i++) {
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBoolean2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBoolean2.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBoolean2.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBoolean2.java Wed Nov 17 15:43:06 2010
@@ -66,13 +66,13 @@ public class TestBoolean2 extends Lucene
searcher = new IndexSearcher(directory, true);
// Make big index
- dir2 = new MockDirectoryWrapper(new RAMDirectory(directory));
+ dir2 = new MockDirectoryWrapper(random, new RAMDirectory(directory));
// First multiply small test index:
mulFactor = 1;
int docCount = 0;
do {
- final Directory copy = new MockDirectoryWrapper(new RAMDirectory(dir2));
+ final Directory copy = new MockDirectoryWrapper(random, new RAMDirectory(dir2));
RandomIndexWriter w = new RandomIndexWriter(random, dir2);
w.addIndexes(new Directory[] {copy});
docCount = w.maxDoc();
@@ -243,7 +243,7 @@ public class TestBoolean2 extends Lucene
// match up.
Sort sort = Sort.INDEXORDER;
- QueryUtils.check(q1,searcher);
+ QueryUtils.check(random, q1,searcher);
TopFieldCollector collector = TopFieldCollector.create(sort, 1000,
false, true, true, true);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java Wed Nov 17 15:43:06 2010
@@ -85,7 +85,7 @@ public class TestBooleanMinShouldMatch e
printHits(getName(), h, s);
}
assertEquals("result count", expected, h.length);
- QueryUtils.check(q,s);
+ QueryUtils.check(random, q,s);
}
public void testAllOptional() throws Exception {
@@ -329,8 +329,8 @@ public class TestBooleanMinShouldMatch e
TopDocs top1 = s.search(q1,null,100);
TopDocs top2 = s.search(q2,null,100);
if (i < 100) {
- QueryUtils.check(q1,s);
- QueryUtils.check(q2,s);
+ QueryUtils.check(random, q1,s);
+ QueryUtils.check(random, q2,s);
}
// The constrained query
// should be a superset to the unconstrained query.
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanOr.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanOr.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanOr.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanOr.java Wed Nov 17 15:43:06 2010
@@ -24,11 +24,6 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.Directory;
public class TestBooleanOr extends LuceneTestCase {
@@ -47,7 +42,7 @@ public class TestBooleanOr extends Lucen
private int search(Query q) throws IOException {
- QueryUtils.check(q,searcher);
+ QueryUtils.check(random, q,searcher);
return searcher.search(q, null, 1000).totalHits;
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Wed Nov 17 15:43:06 2010
@@ -162,7 +162,7 @@ public class TestDisjunctionMaxQuery ext
dq.add(tq("id", "d1"));
dq.add(tq("dek", "DOES_NOT_EXIST"));
- QueryUtils.check(dq, s);
+ QueryUtils.check(random, dq, s);
final Weight dw = dq.weight(s);
final Scorer ds = dw.scorer(s.getIndexReader(), true, false);
@@ -178,7 +178,7 @@ public class TestDisjunctionMaxQuery ext
dq.add(tq("dek", "albino"));
dq.add(tq("dek", "DOES_NOT_EXIST"));
- QueryUtils.check(dq, s);
+ QueryUtils.check(random, dq, s);
final Weight dw = dq.weight(s);
final Scorer ds = dw.scorer(s.getIndexReader(), true, false);
@@ -192,7 +192,7 @@ public class TestDisjunctionMaxQuery ext
DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
q.add(tq("hed", "albino"));
q.add(tq("hed", "elephant"));
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -216,7 +216,7 @@ public class TestDisjunctionMaxQuery ext
DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
q.add(tq("dek", "albino"));
q.add(tq("dek", "elephant"));
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -241,7 +241,7 @@ public class TestDisjunctionMaxQuery ext
q.add(tq("hed", "elephant"));
q.add(tq("dek", "albino"));
q.add(tq("dek", "elephant"));
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -264,7 +264,7 @@ public class TestDisjunctionMaxQuery ext
DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.01f);
q.add(tq("dek", "albino"));
q.add(tq("dek", "elephant"));
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -292,7 +292,7 @@ public class TestDisjunctionMaxQuery ext
q1.add(tq("hed", "albino"));
q1.add(tq("dek", "albino"));
q.add(q1, BooleanClause.Occur.MUST);// true,false);
- QueryUtils.check(q1, s);
+ QueryUtils.check(random, q1, s);
}
{
@@ -300,10 +300,10 @@ public class TestDisjunctionMaxQuery ext
q2.add(tq("hed", "elephant"));
q2.add(tq("dek", "elephant"));
q.add(q2, BooleanClause.Occur.MUST);// true,false);
- QueryUtils.check(q2, s);
+ QueryUtils.check(random, q2, s);
}
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -335,7 +335,7 @@ public class TestDisjunctionMaxQuery ext
q2.add(tq("dek", "elephant"));
q.add(q2, BooleanClause.Occur.SHOULD);// false,false);
}
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -371,7 +371,7 @@ public class TestDisjunctionMaxQuery ext
q2.add(tq("dek", "elephant"));
q.add(q2, BooleanClause.Occur.SHOULD);// false,false);
}
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
@@ -425,7 +425,7 @@ public class TestDisjunctionMaxQuery ext
q2.add(tq("dek", "elephant"));
q.add(q2, BooleanClause.Occur.SHOULD);// false,false);
}
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java Wed Nov 17 15:43:06 2010
@@ -98,7 +98,7 @@ public class TestExplanations extends Lu
/** check the expDocNrs first, then check the query (and the explanations) */
public void qtest(Query q, int[] expDocNrs) throws Exception {
- CheckHits.checkHitCollector(q, FIELD, searcher, expDocNrs);
+ CheckHits.checkHitCollector(random, q, FIELD, searcher, expDocNrs);
}
/**
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java Wed Nov 17 15:43:06 2010
@@ -110,7 +110,7 @@ public class TestFilteredQuery extends L
ScoreDoc[] hits = searcher.search (filteredquery, null, 1000).scoreDocs;
assertEquals (1, hits.length);
assertEquals (1, hits[0].doc);
- QueryUtils.check(filteredquery,searcher);
+ QueryUtils.check(random, filteredquery,searcher);
hits = searcher.search (filteredquery, null, 1000, new Sort(new SortField("sorter", SortField.STRING))).scoreDocs;
assertEquals (1, hits.length);
@@ -119,18 +119,18 @@ public class TestFilteredQuery extends L
filteredquery = new FilteredQuery (new TermQuery (new Term ("field", "one")), filter);
hits = searcher.search (filteredquery, null, 1000).scoreDocs;
assertEquals (2, hits.length);
- QueryUtils.check(filteredquery,searcher);
+ QueryUtils.check(random, filteredquery,searcher);
filteredquery = new FilteredQuery (new TermQuery (new Term ("field", "x")), filter);
hits = searcher.search (filteredquery, null, 1000).scoreDocs;
assertEquals (1, hits.length);
assertEquals (3, hits[0].doc);
- QueryUtils.check(filteredquery,searcher);
+ QueryUtils.check(random, filteredquery,searcher);
filteredquery = new FilteredQuery (new TermQuery (new Term ("field", "y")), filter);
hits = searcher.search (filteredquery, null, 1000).scoreDocs;
assertEquals (0, hits.length);
- QueryUtils.check(filteredquery,searcher);
+ QueryUtils.check(random, filteredquery,searcher);
// test boost
Filter f = newStaticFilterA();
@@ -190,7 +190,7 @@ public class TestFilteredQuery extends L
Query filteredquery = new FilteredQuery(rq, filter);
ScoreDoc[] hits = searcher.search(filteredquery, null, 1000).scoreDocs;
assertEquals(2, hits.length);
- QueryUtils.check(filteredquery,searcher);
+ QueryUtils.check(random, filteredquery,searcher);
}
public void testBoolean() throws Exception {
@@ -203,7 +203,7 @@ public class TestFilteredQuery extends L
bq.add(query, BooleanClause.Occur.MUST);
ScoreDoc[] hits = searcher.search(bq, null, 1000).scoreDocs;
assertEquals(0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
// Make sure BooleanQuery, which does out-of-order
@@ -216,7 +216,7 @@ public class TestFilteredQuery extends L
bq.add(new TermQuery(new Term("field", "two")), BooleanClause.Occur.SHOULD);
ScoreDoc[] hits = searcher.search(query, 1000).scoreDocs;
assertEquals(1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java Wed Nov 17 15:43:06 2010
@@ -38,8 +38,8 @@ import java.io.IOException;
public class TestMultiTermQueryRewrites extends LuceneTestCase {
static Directory dir, sdir1, sdir2;
- static IndexReader reader, multiReader;
- static IndexSearcher searcher, multiSearcher;
+ static IndexReader reader, multiReader, multiReaderDupls;
+ static IndexSearcher searcher, multiSearcher, multiSearcherDupls;
@BeforeClass
public static void beforeClass() throws Exception {
@@ -61,19 +61,26 @@ public class TestMultiTermQueryRewrites
reader = IndexReader.open(dir, true);
searcher = new IndexSearcher(reader);
+
multiReader = new MultiReader(new IndexReader[] {
IndexReader.open(sdir1, true), IndexReader.open(sdir2, true)
}, true);
multiSearcher = new IndexSearcher(multiReader);
+
+ multiReaderDupls = new MultiReader(new IndexReader[] {
+ IndexReader.open(sdir1, true), IndexReader.open(dir, true)
+ }, true);
+ multiSearcherDupls = new IndexSearcher(multiReaderDupls);
}
@AfterClass
public static void afterClass() throws Exception {
reader.close();
multiReader.close();
+ multiReaderDupls.close();
dir.close(); sdir1.close(); sdir2.close();
- reader = multiReader = null;
- searcher = multiSearcher = null;
+ reader = multiReader = multiReaderDupls = null;
+ searcher = multiSearcher = multiSearcherDupls = null;
dir = sdir1 = sdir2 = null;
}
@@ -108,14 +115,18 @@ public class TestMultiTermQueryRewrites
mtq.setRewriteMethod(method);
final Query q1 = searcher.rewrite(mtq);
final Query q2 = multiSearcher.rewrite(mtq);
+ final Query q3 = multiSearcherDupls.rewrite(mtq);
if (VERBOSE) {
System.out.println();
System.out.println("single segment: " + q1);
- System.out.println(" multi segment: " + q2);
+ System.out.println("multi segment: " + q2);
+ System.out.println("multi segment with duplicates: " + q3);
}
assertEquals("The multi-segment case must produce same rewritten query", q1, q2);
+ assertEquals("The multi-segment case with duplicates must produce same rewritten query", q1, q3);
checkBooleanQueryOrder(q1);
checkBooleanQueryOrder(q2);
+ checkBooleanQueryOrder(q3);
}
public void testRewritesWithDuplicateTerms() throws Exception {
@@ -147,8 +158,8 @@ public class TestMultiTermQueryRewrites
@Override
protected TermsEnum getTermsEnum(IndexReader reader, AttributeSource atts) throws IOException {
return new TermRangeTermsEnum(reader, field, "2", "7", true, true, null) {
- final MultiTermQuery.BoostAttribute boostAtt =
- attributes().addAttribute(MultiTermQuery.BoostAttribute.class);
+ final BoostAttribute boostAtt =
+ attributes().addAttribute(BoostAttribute.class);
@Override
protected AcceptStatus accept(BytesRef term) {
@@ -166,14 +177,18 @@ public class TestMultiTermQueryRewrites
mtq.setRewriteMethod(method);
final Query q1 = searcher.rewrite(mtq);
final Query q2 = multiSearcher.rewrite(mtq);
+ final Query q3 = multiSearcherDupls.rewrite(mtq);
if (VERBOSE) {
System.out.println();
System.out.println("single segment: " + q1);
- System.out.println(" multi segment: " + q2);
+ System.out.println("multi segment: " + q2);
+ System.out.println("multi segment with duplicates: " + q3);
}
assertEquals("The multi-segment case must produce same rewritten query", q1, q2);
+ assertEquals("The multi-segment case with duplicates must produce same rewritten query", q1, q3);
checkBooleanQueryBoosts((BooleanQuery) q1);
checkBooleanQueryBoosts((BooleanQuery) q2);
+ checkBooleanQueryBoosts((BooleanQuery) q3);
}
public void testBoosts() throws Exception {
@@ -183,4 +198,39 @@ public class TestMultiTermQueryRewrites
checkBoosts(new MultiTermQuery.TopTermsScoringBooleanQueryRewrite(1024));
}
+ private void checkMaxClauseLimitation(MultiTermQuery.RewriteMethod method) throws Exception {
+ // default gets restored automatically by LuceneTestCase:
+ BooleanQuery.setMaxClauseCount(3);
+
+ final MultiTermQuery mtq = new TermRangeQuery("data", "2", "7", true, true);
+ mtq.setRewriteMethod(method);
+ try {
+ multiSearcherDupls.rewrite(mtq);
+ fail("Should throw BooleanQuery.TooManyClauses");
+ } catch (BooleanQuery.TooManyClauses e) {
+ // Maybe remove this assert in later versions, when internal API changes:
+ assertEquals("Should throw BooleanQuery.TooManyClauses with a stacktrace containing checkMaxClauseCount()",
+ "checkMaxClauseCount", e.getStackTrace()[0].getMethodName());
+ }
+ }
+
+ private void checkNoMaxClauseLimitation(MultiTermQuery.RewriteMethod method) throws Exception {
+ // default gets restored automatically by LuceneTestCase:
+ BooleanQuery.setMaxClauseCount(3);
+
+ final MultiTermQuery mtq = new TermRangeQuery("data", "2", "7", true, true);
+ mtq.setRewriteMethod(method);
+ multiSearcherDupls.rewrite(mtq);
+ }
+
+ public void testMaxClauseLimitations() throws Exception {
+ checkMaxClauseLimitation(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
+ checkMaxClauseLimitation(MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE);
+
+ checkNoMaxClauseLimitation(MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE);
+ checkNoMaxClauseLimitation(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT);
+ checkNoMaxClauseLimitation(new MultiTermQuery.TopTermsScoringBooleanQueryRewrite(1024));
+ checkNoMaxClauseLimitation(new MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite(1024));
+ }
+
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java Wed Nov 17 15:43:06 2010
@@ -23,7 +23,6 @@ import org.apache.lucene.analysis.tokena
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.index.codecs.CodecProvider;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.store.*;
import org.apache.lucene.util.Version;
@@ -105,7 +104,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "five"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
public void testBarelyCloseEnough() throws Exception {
@@ -114,7 +113,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "five"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
/**
@@ -126,7 +125,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "five"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("exact match", 1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
query = new PhraseQuery();
@@ -134,7 +133,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "one"));
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("reverse not exact", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
public void testSlop1() throws Exception {
@@ -144,7 +143,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "two"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("in order", 1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// Ensures slop of 1 does not work for phrases out of order;
@@ -155,7 +154,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "one"));
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("reversed, slop not 2 or more", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
/**
@@ -167,7 +166,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "one"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("just sloppy enough", 1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
query = new PhraseQuery();
@@ -176,7 +175,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "one"));
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("not sloppy enough", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
@@ -191,7 +190,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "five"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("two total moves", 1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
query = new PhraseQuery();
@@ -201,13 +200,13 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "one"));
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("slop of 5 not close enough", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
query.setSlop(6);
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("slop of 6 just right", 1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
@@ -230,7 +229,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field","words"));
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// StopAnalyzer as of 2.4 does not leave "holes", so this matches.
@@ -239,7 +238,7 @@ public class TestPhraseQuery extends Luc
query.add(new Term("field", "here"));
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
searcher.close();
@@ -270,7 +269,7 @@ public class TestPhraseQuery extends Luc
phraseQuery.add(new Term("source", "info"));
ScoreDoc[] hits = searcher.search(phraseQuery, null, 1000).scoreDocs;
assertEquals(2, hits.length);
- QueryUtils.check(phraseQuery,searcher);
+ QueryUtils.check(random, phraseQuery,searcher);
TermQuery termQuery = new TermQuery(new Term("contents","foobar"));
@@ -279,7 +278,7 @@ public class TestPhraseQuery extends Luc
booleanQuery.add(phraseQuery, BooleanClause.Occur.MUST);
hits = searcher.search(booleanQuery, null, 1000).scoreDocs;
assertEquals(1, hits.length);
- QueryUtils.check(termQuery,searcher);
+ QueryUtils.check(random, termQuery,searcher);
searcher.close();
@@ -326,7 +325,7 @@ public class TestPhraseQuery extends Luc
booleanQuery.add(termQuery, BooleanClause.Occur.MUST);
hits = searcher.search(booleanQuery, null, 1000).scoreDocs;
assertEquals(2, hits.length);
- QueryUtils.check(booleanQuery,searcher);
+ QueryUtils.check(random, booleanQuery,searcher);
searcher.close();
@@ -368,7 +367,7 @@ public class TestPhraseQuery extends Luc
assertEquals(1, hits[1].doc);
assertEquals(0.31, hits[2].score, 0.01);
assertEquals(2, hits[2].doc);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
searcher.close();
reader.close();
directory.close();
@@ -393,13 +392,13 @@ public class TestPhraseQuery extends Luc
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("slop of 100 just right", 1, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
query.setSlop(99);
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("slop of 99 not enough", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
// work on two docs like this: "phrase exist notexist exist found"
@@ -412,7 +411,7 @@ public class TestPhraseQuery extends Luc
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("phrase without repetitions exists in 2 docs", 2, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// phrase with repetitions that exists in 2 docs
query = new PhraseQuery();
@@ -423,7 +422,7 @@ public class TestPhraseQuery extends Luc
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("phrase with repetitions exists in two docs", 2, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// phrase I with repetitions that does not exist in any doc
query = new PhraseQuery();
@@ -434,7 +433,7 @@ public class TestPhraseQuery extends Luc
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("nonexisting phrase with repetitions does not exist in any doc", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// phrase II with repetitions that does not exist in any doc
query = new PhraseQuery();
@@ -446,7 +445,7 @@ public class TestPhraseQuery extends Luc
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("nonexisting phrase with repetitions does not exist in any doc", 0, hits.length);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
}
@@ -469,7 +468,7 @@ public class TestPhraseQuery extends Luc
assertEquals("phrase found with exact phrase scorer", 1, hits.length);
float score0 = hits[0].score;
//System.out.println("(exact) field: two three: "+score0);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// search on non palyndrome, find phrase with slop 2, though no slop required here.
query.setSlop(2); // to use sloppy scorer
@@ -478,7 +477,7 @@ public class TestPhraseQuery extends Luc
float score1 = hits[0].score;
//System.out.println("(sloppy) field: two three: "+score1);
assertEquals("exact scorer and sloppy scorer score the same when slop does not matter",score0, score1, SCORE_COMP_THRESH);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// search ordered in palyndrome, find it twice
query = new PhraseQuery();
@@ -489,7 +488,7 @@ public class TestPhraseQuery extends Luc
assertEquals("just sloppy enough", 1, hits.length);
//float score2 = hits[0].score;
//System.out.println("palindrome: two three: "+score2);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
//commented out for sloppy-phrase efficiency (issue 736) - see SloppyPhraseScorer.phraseFreq().
//assertTrue("ordered scores higher in palindrome",score1+SCORE_COMP_THRESH<score2);
@@ -503,7 +502,7 @@ public class TestPhraseQuery extends Luc
assertEquals("just sloppy enough", 1, hits.length);
//float score3 = hits[0].score;
//System.out.println("palindrome: three two: "+score3);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
//commented out for sloppy-phrase efficiency (issue 736) - see SloppyPhraseScorer.phraseFreq().
//assertTrue("reversed scores higher in palindrome",score1+SCORE_COMP_THRESH<score3);
@@ -530,7 +529,7 @@ public class TestPhraseQuery extends Luc
assertEquals("phrase found with exact phrase scorer", 1, hits.length);
float score0 = hits[0].score;
//System.out.println("(exact) field: one two three: "+score0);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// just make sure no exc:
searcher.explain(query, 0);
@@ -542,7 +541,7 @@ public class TestPhraseQuery extends Luc
float score1 = hits[0].score;
//System.out.println("(sloppy) field: one two three: "+score1);
assertEquals("exact scorer and sloppy scorer score the same when slop does not matter",score0, score1, SCORE_COMP_THRESH);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
// search ordered in palyndrome, find it twice
query = new PhraseQuery();
@@ -558,7 +557,7 @@ public class TestPhraseQuery extends Luc
assertEquals("just sloppy enough", 1, hits.length);
//float score2 = hits[0].score;
//System.out.println("palindrome: one two three: "+score2);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
//commented out for sloppy-phrase efficiency (issue 736) - see SloppyPhraseScorer.phraseFreq().
//assertTrue("ordered scores higher in palindrome",score1+SCORE_COMP_THRESH<score2);
@@ -573,7 +572,7 @@ public class TestPhraseQuery extends Luc
assertEquals("just sloppy enough", 1, hits.length);
//float score3 = hits[0].score;
//System.out.println("palindrome: three two one: "+score3);
- QueryUtils.check(query,searcher);
+ QueryUtils.check(random, query,searcher);
//commented out for sloppy-phrase efficiency (issue 736) - see SloppyPhraseScorer.phraseFreq().
//assertTrue("reversed scores higher in palindrome",score1+SCORE_COMP_THRESH<score3);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java Wed Nov 17 15:43:06 2010
@@ -296,11 +296,11 @@ public class TestCustomScoreQuery extend
assertEquals("queries should have same #hits",h1.size(),h4CustomAdd.size());
assertEquals("queries should have same #hits",h1.size(),h5CustomMulAdd.size());
- QueryUtils.check(q1,s);
- QueryUtils.check(q2,s);
- QueryUtils.check(q3,s);
- QueryUtils.check(q4,s);
- QueryUtils.check(q5,s);
+ QueryUtils.check(random, q1,s);
+ QueryUtils.check(random, q2,s);
+ QueryUtils.check(random, q3,s);
+ QueryUtils.check(random, q4,s);
+ QueryUtils.check(random, q5,s);
// verify scores ratios
for (final Integer doc : h1.keySet()) {
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java Wed Nov 17 15:43:06 2010
@@ -80,7 +80,7 @@ public class TestFieldScoreQuery extends
IndexSearcher s = new IndexSearcher(dir, true);
Query q = new FieldScoreQuery(field,tp);
log("test: "+q);
- QueryUtils.check(q,s);
+ QueryUtils.check(random, q,s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
assertEquals("All docs should be matched!",N_DOCS,h.length);
String prevID = "ID"+(N_DOCS+1); // greater than all ids of docs in this test
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java Wed Nov 17 15:43:06 2010
@@ -69,7 +69,7 @@ public class TestOrdValues extends Funct
Query q = new ValueSourceQuery(vs);
log("test: " + q);
- QueryUtils.check(q, s);
+ QueryUtils.check(random, q, s);
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
assertEquals("All docs should be matched!", N_DOCS, h.length);
String prevID = inOrder
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java Wed Nov 17 15:43:06 2010
@@ -37,6 +37,7 @@ import static org.apache.lucene.util.Luc
import java.io.Reader;
import java.io.IOException;
+import java.util.Random;
/**
*
@@ -111,8 +112,8 @@ public class PayloadHelper {
* @throws IOException
*/
// TODO: randomize
- public IndexSearcher setUp(Similarity similarity, int numDocs) throws IOException {
- Directory directory = new MockDirectoryWrapper(new RAMDirectory());
+ public IndexSearcher setUp(Random random, Similarity similarity, int numDocs) throws IOException {
+ Directory directory = new MockDirectoryWrapper(random, new RAMDirectory());
PayloadAnalyzer analyzer = new PayloadAnalyzer();
// TODO randomize this
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java Wed Nov 17 15:43:06 2010
@@ -282,7 +282,7 @@ public class TestPayloadTermQuery extend
assertTrue("hits Size: " + hits.totalHits + " is not: " + 1, hits.totalHits == 1);
int[] results = new int[1];
results[0] = 0;//hits.scoreDocs[0].doc;
- CheckHits.checkHitCollector(query, PayloadHelper.NO_PAYLOAD_FIELD, searcher, results);
+ CheckHits.checkHitCollector(random, query, PayloadHelper.NO_PAYLOAD_FIELD, searcher, results);
}
// must be static for weight serialization tests
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java Wed Nov 17 15:43:06 2010
@@ -562,6 +562,6 @@ public class TestBasics extends LuceneTe
}
private void checkHits(Query query, int[] results) throws IOException {
- CheckHits.checkHits(query, "field", searcher, results);
+ CheckHits.checkHits(random, query, "field", searcher, results);
}
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java Wed Nov 17 15:43:06 2010
@@ -124,7 +124,7 @@ public class TestFieldMaskingSpanQuery e
}
protected void check(SpanQuery q, int[] docs) throws Exception {
- CheckHits.checkHitCollector(q, null, searcher, docs);
+ CheckHits.checkHitCollector(random, q, null, searcher, docs);
}
public void testRewrite0() throws Exception {
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java Wed Nov 17 15:43:06 2010
@@ -88,7 +88,7 @@ public class TestNearSpansOrdered extend
public void testSpanNearQuery() throws Exception {
SpanNearQuery q = makeQuery();
- CheckHits.checkHits(q, FIELD, searcher, new int[] {0,1});
+ CheckHits.checkHits(random, q, FIELD, searcher, new int[] {0,1});
}
public String s(Spans span) {
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java Wed Nov 17 15:43:06 2010
@@ -60,7 +60,7 @@ public class TestPayloadSpans extends Lu
public void setUp() throws Exception {
super.setUp();
PayloadHelper helper = new PayloadHelper();
- searcher = helper.setUp(similarity, 1000);
+ searcher = helper.setUp(random, similarity, 1000);
indexReader = searcher.getIndexReader();
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java Wed Nov 17 15:43:06 2010
@@ -89,7 +89,7 @@ public class TestSpans extends LuceneTes
}
private void checkHits(Query query, int[] results) throws IOException {
- CheckHits.checkHits(query, field, searcher, results);
+ CheckHits.checkHits(random, query, field, searcher, results);
}
private void orderedSlopTest3SQ(
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java Wed Nov 17 15:43:06 2010
@@ -137,7 +137,7 @@ public class TestSpansAdvanced extends L
protected static void assertHits(Searcher s, Query query,
final String description, final String[] expectedIds,
final float[] expectedScores) throws IOException {
- QueryUtils.check(query, s);
+ QueryUtils.check(random, query, s);
final float tolerance = 1e-5f;
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java Wed Nov 17 15:43:06 2010
@@ -78,8 +78,9 @@ public class MockDirectoryWrapper extend
unSyncedFiles = new HashSet<String>();
}
- public MockDirectoryWrapper(Directory delegate) {
+ public MockDirectoryWrapper(Random random, Directory delegate) {
this.delegate = delegate;
+ this.randomState = random;
init();
}
@@ -96,6 +97,7 @@ public class MockDirectoryWrapper extend
@Deprecated
@Override
public void sync(String name) throws IOException {
+ maybeYield();
maybeThrowDeterministicException();
if (crashed)
throw new IOException("cannot sync after crash");
@@ -105,6 +107,7 @@ public class MockDirectoryWrapper extend
@Override
public synchronized void sync(Collection<String> names) throws IOException {
+ maybeYield();
for (String name : names)
maybeThrowDeterministicException();
if (crashed)
@@ -115,6 +118,7 @@ public class MockDirectoryWrapper extend
@Override
public String toString() {
+ maybeYield();
return "MockDirWrapper(" + delegate + ")";
}
@@ -213,10 +217,8 @@ public class MockDirectoryWrapper extend
* IOException on the first write to an OutputStream based
* on this probability.
*/
- public void setRandomIOExceptionRate(double rate, long seed) {
+ public void setRandomIOExceptionRate(double rate) {
randomIOExceptionRate = rate;
- // seed so we have deterministic behaviour:
- randomState = new Random(seed);
}
public double getRandomIOExceptionRate() {
return randomIOExceptionRate;
@@ -233,6 +235,7 @@ public class MockDirectoryWrapper extend
@Override
public synchronized void deleteFile(String name) throws IOException {
+ maybeYield();
deleteFile(name, false);
}
@@ -251,7 +254,14 @@ public class MockDirectoryWrapper extend
return ioe;
}
+ private void maybeYield() {
+ if (randomState.nextBoolean()) {
+ Thread.yield();
+ }
+ }
+
private synchronized void deleteFile(String name, boolean forced) throws IOException {
+ maybeYield();
maybeThrowDeterministicException();
@@ -277,6 +287,7 @@ public class MockDirectoryWrapper extend
@Override
public synchronized IndexOutput createOutput(String name) throws IOException {
+ maybeYield();
if (crashed)
throw new IOException("cannot createOutput after crash");
init();
@@ -317,6 +328,7 @@ public class MockDirectoryWrapper extend
@Override
public synchronized IndexInput openInput(String name) throws IOException {
+ maybeYield();
if (!delegate.fileExists(name))
throw new FileNotFoundException(name);
@@ -367,6 +379,7 @@ public class MockDirectoryWrapper extend
@Override
public synchronized void close() throws IOException {
+ maybeYield();
if (openFiles == null) {
openFiles = new HashMap<String,Integer>();
openFilesDeleted = new HashSet<String>();
@@ -456,56 +469,67 @@ public class MockDirectoryWrapper extend
@Override
public synchronized String[] listAll() throws IOException {
+ maybeYield();
return delegate.listAll();
}
@Override
public synchronized boolean fileExists(String name) throws IOException {
+ maybeYield();
return delegate.fileExists(name);
}
@Override
public synchronized long fileModified(String name) throws IOException {
+ maybeYield();
return delegate.fileModified(name);
}
@Override
public synchronized void touchFile(String name) throws IOException {
+ maybeYield();
delegate.touchFile(name);
}
@Override
public synchronized long fileLength(String name) throws IOException {
+ maybeYield();
return delegate.fileLength(name);
}
@Override
public synchronized Lock makeLock(String name) {
+ maybeYield();
return delegate.makeLock(name);
}
@Override
public synchronized void clearLock(String name) throws IOException {
+ maybeYield();
delegate.clearLock(name);
}
@Override
public synchronized void setLockFactory(LockFactory lockFactory) {
+ maybeYield();
delegate.setLockFactory(lockFactory);
}
@Override
public synchronized LockFactory getLockFactory() {
+ maybeYield();
return delegate.getLockFactory();
}
@Override
public synchronized String getLockID() {
+ maybeYield();
return delegate.getLockID();
}
@Override
public synchronized void copy(Directory to, String src, String dest) throws IOException {
+ maybeYield();
delegate.copy(to, src, dest);
}
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexInputWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexInputWrapper.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexInputWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexInputWrapper.java Wed Nov 17 15:43:06 2010
@@ -132,21 +132,11 @@ public class MockIndexInputWrapper exten
}
@Override
- public int readVInt() throws IOException {
- return delegate.readVInt();
- }
-
- @Override
public long readLong() throws IOException {
return delegate.readLong();
}
@Override
- public long readVLong() throws IOException {
- return delegate.readVLong();
- }
-
- @Override
public String readString() throws IOException {
return delegate.readString();
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java Wed Nov 17 15:43:06 2010
@@ -99,7 +99,14 @@ public class MockIndexOutputWrapper exte
}
throw new IOException("fake disk full at " + dir.getRecomputedActualSizeInBytes() + " bytes when writing " + name);
} else {
- delegate.writeBytes(b, offset, len);
+ if (dir.randomState.nextBoolean()) {
+ final int half = len/2;
+ delegate.writeBytes(b, offset, half);
+ Thread.yield();
+ delegate.writeBytes(b, offset+half, len-half);
+ } else {
+ delegate.writeBytes(b, offset, len);
+ }
}
dir.maybeThrowDeterministicException();
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java Wed Nov 17 15:43:06 2010
@@ -40,8 +40,8 @@ public class TestFileSwitchDirectory ext
fileExtensions.add(IndexFileNames.FIELDS_EXTENSION);
fileExtensions.add(IndexFileNames.FIELDS_INDEX_EXTENSION);
- Directory primaryDir = new MockDirectoryWrapper(new RAMDirectory());
- Directory secondaryDir = new MockDirectoryWrapper(new RAMDirectory());
+ Directory primaryDir = new MockDirectoryWrapper(random, new RAMDirectory());
+ Directory secondaryDir = new MockDirectoryWrapper(random, new RAMDirectory());
FileSwitchDirectory fsd = new FileSwitchDirectory(fileExtensions, primaryDir, secondaryDir, true);
IndexWriter writer = new IndexWriter(fsd, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestLockFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestLockFactory.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestLockFactory.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestLockFactory.java Wed Nov 17 15:43:06 2010
@@ -42,7 +42,7 @@ public class TestLockFactory extends Luc
// methods are called at the right time, locks are created, etc.
public void testCustomLockFactory() throws IOException {
- Directory dir = new MockDirectoryWrapper(new RAMDirectory());
+ Directory dir = new MockDirectoryWrapper(random, new RAMDirectory());
MockLockFactory lf = new MockLockFactory();
dir.setLockFactory(lf);
@@ -75,7 +75,7 @@ public class TestLockFactory extends Luc
// exceptions raised:
// Verify: NoLockFactory allows two IndexWriters
public void testRAMDirectoryNoLocking() throws IOException {
- Directory dir = new MockDirectoryWrapper(new RAMDirectory());
+ Directory dir = new MockDirectoryWrapper(random, new RAMDirectory());
dir.setLockFactory(NoLockFactory.getNoLockFactory());
assertTrue("RAMDirectory.setLockFactory did not take",
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java Wed Nov 17 15:43:06 2010
@@ -69,7 +69,7 @@ public class TestRAMDirectory extends Lu
public void testRAMDirectory () throws IOException {
Directory dir = FSDirectory.open(indexDir);
- MockDirectoryWrapper ramDir = new MockDirectoryWrapper(new RAMDirectory(dir));
+ MockDirectoryWrapper ramDir = new MockDirectoryWrapper(random, new RAMDirectory(dir));
// close the underlaying directory
dir.close();
@@ -101,7 +101,7 @@ public class TestRAMDirectory extends Lu
public void testRAMDirectorySize() throws IOException, InterruptedException {
Directory dir = FSDirectory.open(indexDir);
- final MockDirectoryWrapper ramDir = new MockDirectoryWrapper(new RAMDirectory(dir));
+ final MockDirectoryWrapper ramDir = new MockDirectoryWrapper(random, new RAMDirectory(dir));
dir.close();
final IndexWriter writer = new IndexWriter(ramDir, new IndexWriterConfig(
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java Wed Nov 17 15:43:06 2010
@@ -659,7 +659,7 @@ public abstract class LuceneTestCase ext
public static MockDirectoryWrapper newDirectory(Random r) throws IOException {
StackTraceElement[] stack = new Exception().getStackTrace();
Directory impl = newDirectoryImpl(r, TEST_DIRECTORY);
- MockDirectoryWrapper dir = new MockDirectoryWrapper(impl);
+ MockDirectoryWrapper dir = new MockDirectoryWrapper(r, impl);
stores.put(dir, stack);
return dir;
}
@@ -679,7 +679,7 @@ public abstract class LuceneTestCase ext
for (String file : d.listAll()) {
d.copy(impl, file, file);
}
- MockDirectoryWrapper dir = new MockDirectoryWrapper(impl);
+ MockDirectoryWrapper dir = new MockDirectoryWrapper(r, impl);
stores.put(dir, stack);
return dir;
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBitVector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBitVector.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBitVector.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBitVector.java Wed Nov 17 15:43:06 2010
@@ -19,7 +19,6 @@ package org.apache.lucene.util;
import java.io.IOException;
-import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.store.RAMDirectory;
@@ -137,7 +136,7 @@ public class TestBitVector extends Lucen
}
private void doTestWriteRead(int n) throws Exception {
- MockDirectoryWrapper d = new MockDirectoryWrapper(new RAMDirectory());
+ MockDirectoryWrapper d = new MockDirectoryWrapper(random, new RAMDirectory());
d.setPreventDoubleWrite(false);
BitVector bv = new BitVector(n);
// test count when incrementally setting bits
@@ -168,7 +167,7 @@ public class TestBitVector extends Lucen
}
private void doTestDgaps(int size, int count1, int count2) throws IOException {
- MockDirectoryWrapper d = new MockDirectoryWrapper(new RAMDirectory());
+ MockDirectoryWrapper d = new MockDirectoryWrapper(random, new RAMDirectory());
d.setPreventDoubleWrite(false);
BitVector bv = new BitVector(size);
for (int i=0; i<count1; i++) {
Modified: lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/pl/PolishAnalyzer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/pl/PolishAnalyzer.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/pl/PolishAnalyzer.java (original)
+++ lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/pl/PolishAnalyzer.java Wed Nov 17 15:43:06 2010
@@ -17,8 +17,6 @@ package org.apache.lucene.analysis.pl;
* limitations under the License.
*/
-import java.io.BufferedInputStream;
-import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
@@ -50,6 +48,9 @@ public final class PolishAnalyzer extend
/** File containing default Polish stopwords. */
public final static String DEFAULT_STOPWORD_FILE = "stopwords.txt";
+ /** File containing default Polish stemmer table. */
+ public final static String DEFAULT_STEMMER_FILE = "stemmer_20000.tbl";
+
/**
* Returns an unmodifiable instance of the default stop words set.
* @return default stop words set.
@@ -76,16 +77,8 @@ public final class PolishAnalyzer extend
throw new RuntimeException("Unable to load default stopword set", ex);
}
- InputStream stream = PolishAnalyzer.class.getResourceAsStream("stemmer_20000.tbl");
try {
- DataInputStream in = new DataInputStream(new BufferedInputStream(stream));
- String method = in.readUTF().toUpperCase();
- if (method.indexOf('M') < 0) {
- DEFAULT_TABLE = new org.egothor.stemmer.Trie(in);
- } else {
- DEFAULT_TABLE = new org.egothor.stemmer.MultiTrie2(in);
- }
- in.close();
+ DEFAULT_TABLE = StempelStemmer.load(PolishAnalyzer.class.getResourceAsStream(DEFAULT_STEMMER_FILE));
} catch (IOException ex) {
// default set should always be present as it is part of the
// distribution (JAR)
Modified: lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/stempel/StempelStemmer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/stempel/StempelStemmer.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/stempel/StempelStemmer.java (original)
+++ lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/stempel/StempelStemmer.java Wed Nov 17 15:43:06 2010
@@ -20,6 +20,7 @@ import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Locale;
import org.egothor.stemmer.Diff;
import org.egothor.stemmer.Trie;
@@ -45,17 +46,7 @@ public class StempelStemmer {
* @param stemmerTable stemmer table.
*/
public StempelStemmer(InputStream stemmerTable) throws IOException {
- if (stemmerTable == null) return;
-
- DataInputStream in = new DataInputStream(new BufferedInputStream(
- stemmerTable));
- String method = in.readUTF().toUpperCase();
- if (method.indexOf('M') < 0) {
- stemmer = new org.egothor.stemmer.Trie(in);
- } else {
- stemmer = new org.egothor.stemmer.MultiTrie2(in);
- }
- in.close();
+ this(load(stemmerTable));
}
/**
@@ -66,6 +57,24 @@ public class StempelStemmer {
public StempelStemmer(Trie stemmer) {
this.stemmer = stemmer;
}
+
+ /**
+ * Load a stemmer table from an inputstream.
+ */
+ public static Trie load(InputStream stemmerTable) throws IOException {
+ DataInputStream in = null;
+ try {
+ in = new DataInputStream(new BufferedInputStream(stemmerTable));
+ String method = in.readUTF().toUpperCase(Locale.ENGLISH);
+ if (method.indexOf('M') < 0) {
+ return new org.egothor.stemmer.Trie(in);
+ } else {
+ return new org.egothor.stemmer.MultiTrie2(in);
+ }
+ } finally {
+ in.close();
+ }
+ }
/**
* Stem a word.
Modified: lucene/dev/branches/docvalues/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/CHANGES.txt?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/CHANGES.txt (original)
+++ lucene/dev/branches/docvalues/solr/CHANGES.txt Wed Nov 17 15:43:06 2010
@@ -305,6 +305,8 @@ New Features
* SOLR-2211: Added UAX29TokenizerFactory, which implements UAX#29, a unicode algorithm
with good results for most languages. (Tom Burton-West via rmuir)
+* SOLR-2237: Added StempelPolishStemFilterFactory to contrib/analysis-extras (rmuir)
+
Optimizations
----------------------