You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by bu...@apache.org on 2011/01/13 20:53:39 UTC
svn commit: r1058718 [10/18] - in /lucene/dev/branches/realtime_search: ./
lucene/ lucene/contrib/ lucene/contrib/ant/src/java/org/apache/lucene/ant/
lucene/contrib/ant/src/test/org/apache/lucene/ant/
lucene/contrib/benchmark/ lucene/contrib/demo/src/j...
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java Thu Jan 13 19:53:21 2011
@@ -12,12 +12,15 @@ import junit.framework.Assert;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.search.Weight.ScorerContext;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.util.ReaderUtil;
import static org.apache.lucene.util.LuceneTestCase.TEST_VERSION_CURRENT;
@@ -85,7 +88,7 @@ public class QueryUtils {
}
/** deep check that explanations of a query 'score' correctly */
- public static void checkExplanations (final Query q, final Searcher s) throws IOException {
+ public static void checkExplanations (final Query q, final IndexSearcher s) throws IOException {
CheckHits.checkExplanations(q, null, s, true);
}
@@ -100,27 +103,19 @@ public class QueryUtils {
* @see #checkSerialization
* @see #checkEqual
*/
- public static void check(Random random, Query q1, Searcher s) {
+ public static void check(Random random, Query q1, IndexSearcher s) {
check(random, q1, s, true);
}
- private static void check(Random random, Query q1, Searcher s, boolean wrap) {
+ private static void check(Random random, Query q1, IndexSearcher s, boolean wrap) {
try {
check(q1);
if (s!=null) {
- if (s instanceof IndexSearcher) {
- IndexSearcher is = (IndexSearcher)s;
- checkFirstSkipTo(q1,is);
- checkSkipTo(q1,is);
- if (wrap) {
- check(random, q1, wrapUnderlyingReader(random, is, -1), false);
- check(random, q1, wrapUnderlyingReader(random, is, 0), false);
- check(random, q1, wrapUnderlyingReader(random, is, +1), false);
- }
- }
+ checkFirstSkipTo(q1,s);
+ checkSkipTo(q1,s);
if (wrap) {
- check(random,q1, wrapSearcher(random, s, -1), false);
- check(random,q1, wrapSearcher(random, s, 0), false);
- check(random,q1, wrapSearcher(random, s, +1), false);
+ check(random, q1, wrapUnderlyingReader(random, s, -1), false);
+ check(random, q1, wrapUnderlyingReader(random, s, 0), false);
+ check(random, q1, wrapUnderlyingReader(random, s, +1), false);
}
checkExplanations(q1,s);
checkSerialization(q1,s);
@@ -166,39 +161,6 @@ public class QueryUtils {
out.setSimilarity(s.getSimilarity());
return out;
}
- /**
- * Given a Searcher, returns a new MultiSearcher wrapping the
- * the original Searcher,
- * as well as several "empty" IndexSearchers -- some of which will have
- * deleted documents in them. This new MultiSearcher
- * should behave exactly the same as the original Searcher.
- * @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(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(random, 0), true),
- new MultiSearcher(new Searcher[] {
- 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(random, 0 < edge ? 0 : 3), true),
- new IndexSearcher(makeEmptyIndex(random, 0), true),
- new MultiSearcher(new Searcher[] {
- 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);
- out.setSimilarity(s.getSimilarity());
- return out;
- }
private static Directory makeEmptyIndex(Random random, final int numDeletedDocs)
throws IOException {
@@ -231,7 +193,7 @@ public class QueryUtils {
/** check that the query weight is serializable.
* @throws IOException if serialization check fail.
*/
- private static void checkSerialization(Query q, Searcher s) throws IOException {
+ private static void checkSerialization(Query q, IndexSearcher s) throws IOException {
Weight w = q.weight(s);
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -252,13 +214,12 @@ public class QueryUtils {
}
}
-
/** alternate scorer skipTo(),skipTo(),next(),next(),skipTo(),skipTo(), etc
* and ensure a hitcollector receives same docs and scores
*/
public static void checkSkipTo(final Query q, final IndexSearcher s) throws IOException {
//System.out.println("Checking "+q);
-
+ final AtomicReaderContext[] readerContextArray = ReaderUtil.leaves(s.getTopReaderContext());
if (q.weight(s).scoresDocsOutOfOrder()) return; // in this case order of skipTo() might differ from that of next().
final int skip_op = 0;
@@ -288,8 +249,8 @@ public class QueryUtils {
s.search(q, new Collector() {
private Scorer sc;
- private IndexReader reader;
private Scorer scorer;
+ private int leafPtr;
@Override
public void setScorer(Scorer scorer) throws IOException {
@@ -303,7 +264,7 @@ public class QueryUtils {
try {
if (scorer == null) {
Weight w = q.weight(s);
- scorer = w.scorer(reader, true, false);
+ scorer = w.scorer(readerContextArray[leafPtr], ScorerContext.def());
}
int op = order[(opidx[0]++) % order.length];
@@ -341,19 +302,22 @@ public class QueryUtils {
}
@Override
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
+ public void setNextReader(AtomicReaderContext context) throws IOException {
// confirm that skipping beyond the last doc, on the
// previous reader, hits NO_MORE_DOCS
if (lastReader[0] != null) {
final IndexReader previousReader = lastReader[0];
- Weight w = q.weight(new IndexSearcher(previousReader));
- Scorer scorer = w.scorer(previousReader, true, false);
+ IndexSearcher indexSearcher = new IndexSearcher(previousReader);
+ Weight w = q.weight(indexSearcher);
+ Scorer scorer = w.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def());
if (scorer != null) {
boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
}
+ leafPtr++;
}
- this.reader = lastReader[0] = reader;
+ lastReader[0] = context.reader;
+ assert readerContextArray[leafPtr].reader == context.reader;
this.scorer = null;
lastDoc[0] = -1;
}
@@ -368,8 +332,9 @@ public class QueryUtils {
// confirm that skipping beyond the last doc, on the
// previous reader, hits NO_MORE_DOCS
final IndexReader previousReader = lastReader[0];
- Weight w = q.weight(new IndexSearcher(previousReader));
- Scorer scorer = w.scorer(previousReader, true, false);
+ IndexSearcher indexSearcher = new IndexSearcher(previousReader);
+ Weight w = q.weight(indexSearcher);
+ Scorer scorer = w.scorer((AtomicReaderContext)previousReader.getTopReaderContext(), ScorerContext.def());
if (scorer != null) {
boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
@@ -384,10 +349,10 @@ public class QueryUtils {
final float maxDiff = 1e-3f;
final int lastDoc[] = {-1};
final IndexReader lastReader[] = {null};
-
+ final AtomicReaderContext[] context = ReaderUtil.leaves(s.getTopReaderContext());
s.search(q,new Collector() {
private Scorer scorer;
- private IndexReader reader;
+ private int leafPtr;
@Override
public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
@@ -399,7 +364,7 @@ public class QueryUtils {
long startMS = System.currentTimeMillis();
for (int i=lastDoc[0]+1; i<=doc; i++) {
Weight w = q.weight(s);
- Scorer scorer = w.scorer(reader, true, false);
+ Scorer scorer = w.scorer(context[leafPtr], ScorerContext.def());
Assert.assertTrue("query collected "+doc+" but skipTo("+i+") says no more docs!",scorer.advance(i) != DocIdSetIterator.NO_MORE_DOCS);
Assert.assertEquals("query collected "+doc+" but skipTo("+i+") got to "+scorer.docID(),doc,scorer.docID());
float skipToScore = scorer.score();
@@ -419,20 +384,22 @@ public class QueryUtils {
}
@Override
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
+ public void setNextReader(AtomicReaderContext context) throws IOException {
// confirm that skipping beyond the last doc, on the
// previous reader, hits NO_MORE_DOCS
if (lastReader[0] != null) {
final IndexReader previousReader = lastReader[0];
- Weight w = q.weight(new IndexSearcher(previousReader));
- Scorer scorer = w.scorer(previousReader, true, false);
+ IndexSearcher indexSearcher = new IndexSearcher(previousReader);
+ Weight w = q.weight(indexSearcher);
+ Scorer scorer = w.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def());
if (scorer != null) {
boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
}
+ leafPtr++;
}
- this.reader = lastReader[0] = reader;
+ lastReader[0] = context.reader;
lastDoc[0] = -1;
}
@Override
@@ -445,8 +412,9 @@ public class QueryUtils {
// confirm that skipping beyond the last doc, on the
// previous reader, hits NO_MORE_DOCS
final IndexReader previousReader = lastReader[0];
- Weight w = q.weight(new IndexSearcher(previousReader));
- Scorer scorer = w.scorer(previousReader, true, false);
+ IndexSearcher indexSearcher = new IndexSearcher(previousReader);
+ Weight w = q.weight(indexSearcher);
+ Scorer scorer = w.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def());
if (scorer != null) {
boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/SingleDocTestFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/SingleDocTestFilter.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/SingleDocTestFilter.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/SingleDocTestFilter.java Thu Jan 13 19:53:21 2011
@@ -17,7 +17,7 @@ package org.apache.lucene.search;
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.DocIdBitSet;
import java.util.BitSet;
@@ -31,8 +31,8 @@ public class SingleDocTestFilter extends
}
@Override
- public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
- BitSet bits = new BitSet(reader.maxDoc());
+ public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
+ BitSet bits = new BitSet(context.reader.maxDoc());
bits.set(doc);
return new DocIdBitSet(bits);
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java Thu Jan 13 19:53:21 2011
@@ -372,7 +372,7 @@ public class TestBooleanMinShouldMatch e
- protected void printHits(String test, ScoreDoc[] h, Searcher searcher) throws Exception {
+ protected void printHits(String test, ScoreDoc[] h, IndexSearcher searcher) throws Exception {
System.err.println("------- " + test + " -------");
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanQuery.java Thu Jan 13 19:53:21 2011
@@ -17,13 +17,21 @@ package org.apache.lucene.search;
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.RandomIndexWriter;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.index.Term;
+import org.apache.lucene.util.NamedThreadFactory;
public class TestBooleanQuery extends LuceneTestCase {
@@ -116,5 +124,45 @@ public class TestBooleanQuery extends Lu
w.close();
dir.close();
}
-
+
+ public void testDeMorgan() throws Exception {
+ Directory dir1 = newDirectory();
+ RandomIndexWriter iw1 = new RandomIndexWriter(random, dir1);
+ Document doc1 = new Document();
+ doc1.add(newField("field", "foo bar", Field.Index.ANALYZED));
+ iw1.addDocument(doc1);
+ IndexReader reader1 = iw1.getReader();
+ iw1.close();
+
+ Directory dir2 = newDirectory();
+ RandomIndexWriter iw2 = new RandomIndexWriter(random, dir2);
+ Document doc2 = new Document();
+ doc2.add(newField("field", "foo baz", Field.Index.ANALYZED));
+ iw2.addDocument(doc2);
+ IndexReader reader2 = iw2.getReader();
+ iw2.close();
+
+ QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "field", new MockAnalyzer());
+ qp.setMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
+
+ MultiReader multireader = new MultiReader(reader1, reader2);
+ IndexSearcher searcher = new IndexSearcher(multireader);
+ assertEquals(0, searcher.search(qp.parse("+foo -ba*"), 10).totalHits);
+
+ final ExecutorService es = Executors.newCachedThreadPool(new NamedThreadFactory("NRT search threads"));
+ searcher = new IndexSearcher(multireader, es);
+ if (VERBOSE)
+ System.out.println("rewritten form: " + searcher.rewrite(qp.parse("+foo -ba*")));
+ assertEquals(0, searcher.search(qp.parse("+foo -ba*"), 10).totalHits);
+ es.shutdown();
+ es.awaitTermination(1, TimeUnit.SECONDS);
+
+ multireader.close();
+ reader1.close();
+ reader2.close();
+ dir1.close();
+ dir2.close();
+ }
}
+
+
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBooleanScorer.java Thu Jan 13 19:53:21 2011
@@ -83,7 +83,7 @@ public class TestBooleanScorer extends L
}
}};
- BooleanScorer bs = new BooleanScorer(null, sim, 1, Arrays.asList(scorers), null, scorers.length);
+ BooleanScorer bs = new BooleanScorer(null, false, sim, 1, Arrays.asList(scorers), null, scorers.length);
assertEquals("should have received 3000", 3000, bs.nextDoc());
assertEquals("should have received NO_MORE_DOCS", DocIdSetIterator.NO_MORE_DOCS, bs.nextDoc());
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java Thu Jan 13 19:53:21 2011
@@ -23,6 +23,7 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.SerialMergeScheduler;
import org.apache.lucene.index.SlowMultiReaderWrapper;
@@ -39,21 +40,21 @@ public class TestCachingWrapperFilter ex
RandomIndexWriter writer = new RandomIndexWriter(random, dir);
writer.close();
- IndexReader reader = IndexReader.open(dir, true);
-
+ IndexReader reader = new SlowMultiReaderWrapper(IndexReader.open(dir, true));
+ AtomicReaderContext context = (AtomicReaderContext) reader.getTopReaderContext();
MockFilter filter = new MockFilter();
CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
// first time, nested filter is called
- cacher.getDocIdSet(reader);
+ cacher.getDocIdSet(context);
assertTrue("first time", filter.wasCalled());
// make sure no exception if cache is holding the wrong docIdSet
- cacher.getDocIdSet(reader);
+ cacher.getDocIdSet(context);
// second time, nested filter should not be called
filter.clear();
- cacher.getDocIdSet(reader);
+ cacher.getDocIdSet(context);
assertFalse("second time", filter.wasCalled());
reader.close();
@@ -65,18 +66,19 @@ public class TestCachingWrapperFilter ex
RandomIndexWriter writer = new RandomIndexWriter(random, dir);
writer.close();
- IndexReader reader = IndexReader.open(dir, true);
+ IndexReader reader = new SlowMultiReaderWrapper(IndexReader.open(dir, true));
+ AtomicReaderContext context = (AtomicReaderContext) reader.getTopReaderContext();
final Filter filter = new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) {
+ public DocIdSet getDocIdSet(AtomicReaderContext context) {
return null;
}
};
CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
// the caching filter should return the empty set constant
- assertSame(DocIdSet.EMPTY_DOCIDSET, cacher.getDocIdSet(reader));
+ assertSame(DocIdSet.EMPTY_DOCIDSET, cacher.getDocIdSet(context));
reader.close();
dir.close();
@@ -87,11 +89,12 @@ public class TestCachingWrapperFilter ex
RandomIndexWriter writer = new RandomIndexWriter(random, dir);
writer.close();
- IndexReader reader = IndexReader.open(dir, true);
+ IndexReader reader = new SlowMultiReaderWrapper(IndexReader.open(dir, true));
+ AtomicReaderContext context = (AtomicReaderContext) reader.getTopReaderContext();
final Filter filter = new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) {
+ public DocIdSet getDocIdSet(AtomicReaderContext context) {
return new DocIdSet() {
@Override
public DocIdSetIterator iterator() {
@@ -103,16 +106,18 @@ public class TestCachingWrapperFilter ex
CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
// the caching filter should return the empty set constant
- assertSame(DocIdSet.EMPTY_DOCIDSET, cacher.getDocIdSet(reader));
+ assertSame(DocIdSet.EMPTY_DOCIDSET, cacher.getDocIdSet(context));
reader.close();
dir.close();
}
private static void assertDocIdSetCacheable(IndexReader reader, Filter filter, boolean shouldCacheable) throws IOException {
+ assertTrue(reader.getTopReaderContext().isAtomic);
+ AtomicReaderContext context = (AtomicReaderContext) reader.getTopReaderContext();
final CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
- final DocIdSet originalSet = filter.getDocIdSet(reader);
- final DocIdSet cachedSet = cacher.getDocIdSet(reader);
+ final DocIdSet originalSet = filter.getDocIdSet(context);
+ final DocIdSet cachedSet = cacher.getDocIdSet(context);
assertTrue(cachedSet.isCacheable());
assertEquals(shouldCacheable, originalSet.isCacheable());
//System.out.println("Original: "+originalSet.getClass().getName()+" -- cached: "+cachedSet.getClass().getName());
@@ -140,7 +145,7 @@ public class TestCachingWrapperFilter ex
// a openbitset filter is always cacheable
assertDocIdSetCacheable(reader, new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) {
+ public DocIdSet getDocIdSet(AtomicReaderContext context) {
return new OpenBitSet();
}
}, true);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java Thu Jan 13 19:53:21 2011
@@ -20,6 +20,7 @@ package org.apache.lucene.search;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
@@ -46,7 +47,7 @@ public class TestConstantScoreQuery exte
QueryUtils.checkUnequal(q1, new TermQuery(new Term("a", "b")));
}
- private void checkHits(Searcher searcher, Query q, final float expectedScore, final String scorerClassName, final String innerScorerClassName) throws IOException {
+ private void checkHits(IndexSearcher searcher, Query q, final float expectedScore, final String scorerClassName, final String innerScorerClassName) throws IOException {
final int[] count = new int[1];
searcher.search(q, new Collector() {
private Scorer scorer;
@@ -68,7 +69,7 @@ public class TestConstantScoreQuery exte
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {
+ public void setNextReader(AtomicReaderContext context) {
}
@Override
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCustomSearcherSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCustomSearcherSort.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCustomSearcherSort.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestCustomSearcherSort.java Thu Jan 13 19:53:21 2011
@@ -89,7 +89,7 @@ public class TestCustomSearcherSort exte
Sort custSort = new Sort(
new SortField("publicationDate_", SortField.STRING),
SortField.FIELD_SCORE);
- Searcher searcher = new CustomSearcher(reader, 2);
+ IndexSearcher searcher = new CustomSearcher(reader, 2);
// search and check hits
matchHits(searcher, custSort);
}
@@ -103,28 +103,13 @@ public class TestCustomSearcherSort exte
Sort custSort = new Sort(
new SortField("publicationDate_", SortField.STRING),
SortField.FIELD_SCORE);
- Searcher searcher = new MultiSearcher(new Searcher[] {new CustomSearcher(
- reader, 2)});
- // search and check hits
- matchHits(searcher, custSort);
- }
-
- /**
- * Run the test using two CustomSearcher instances.
- */
- public void testFieldSortMultiCustomSearcher() throws Exception {
- // log("Run testFieldSortMultiCustomSearcher");
- // define the sort criteria
- Sort custSort = new Sort(
- new SortField("publicationDate_", SortField.STRING),
- SortField.FIELD_SCORE);
- Searcher searcher = new MultiSearcher(new CustomSearcher(reader, 0), new CustomSearcher(reader, 2));
+ IndexSearcher searcher = new CustomSearcher(reader, 2);
// search and check hits
matchHits(searcher, custSort);
}
// make sure the documents returned by the search match the expected list
- private void matchHits(Searcher searcher, Sort sort) throws IOException {
+ private void matchHits(IndexSearcher searcher, Sort sort) throws IOException {
// make a query without sorting first
ScoreDoc[] hitsByRank = searcher.search(query, null, Integer.MAX_VALUE).scoreDocs;
checkHits(hitsByRank, "Sort by rank: "); // check for duplicates
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Thu Jan 13 19:53:21 2011
@@ -22,9 +22,12 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.SlowMultiReaderWrapper;
+import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.search.Weight.ScorerContext;
import org.apache.lucene.store.Directory;
import java.text.DecimalFormat;
@@ -59,8 +62,9 @@ public class TestDisjunctionMaxQuery ext
}
@Override
- public float lengthNorm(String fieldName, int numTerms) {
- return 1.0f;
+ public float computeNorm(String fieldName, FieldInvertState state) {
+ // Disable length norm
+ return state.getBoost();
}
@Override
@@ -163,9 +167,9 @@ public class TestDisjunctionMaxQuery ext
dq.add(tq("dek", "DOES_NOT_EXIST"));
QueryUtils.check(random, dq, s);
-
+ assertTrue(s.getTopReaderContext().isAtomic);
final Weight dw = dq.weight(s);
- final Scorer ds = dw.scorer(s.getIndexReader(), true, false);
+ final Scorer ds = dw.scorer((AtomicReaderContext)s.getTopReaderContext(), ScorerContext.def());
final boolean skipOk = ds.advance(3) != DocIdSetIterator.NO_MORE_DOCS;
if (skipOk) {
fail("firsttime skipTo found a match? ... "
@@ -177,11 +181,10 @@ public class TestDisjunctionMaxQuery ext
final DisjunctionMaxQuery dq = new DisjunctionMaxQuery(0.0f);
dq.add(tq("dek", "albino"));
dq.add(tq("dek", "DOES_NOT_EXIST"));
-
+ assertTrue(s.getTopReaderContext().isAtomic);
QueryUtils.check(random, dq, s);
-
final Weight dw = dq.weight(s);
- final Scorer ds = dw.scorer(s.getIndexReader(), true, false);
+ final Scorer ds = dw.scorer((AtomicReaderContext)s.getTopReaderContext(), ScorerContext.def());
assertTrue("firsttime skipTo found no match",
ds.advance(3) != DocIdSetIterator.NO_MORE_DOCS);
assertEquals("found wrong docid", "d4", r.document(ds.docID()).get("id"));
@@ -473,7 +476,7 @@ public class TestDisjunctionMaxQuery ext
return q;
}
- protected void printHits(String test, ScoreDoc[] h, Searcher searcher)
+ protected void printHits(String test, ScoreDoc[] h, IndexSearcher searcher)
throws Exception {
System.err.println("------- " + test + " -------");
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocBoost.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocBoost.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocBoost.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocBoost.java Thu Jan 13 19:53:21 2011
@@ -22,6 +22,7 @@ import java.io.IOException;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
@@ -77,8 +78,8 @@ public class TestDocBoost extends Lucene
scores[doc + base] = scorer.score();
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {
- base = docBase;
+ public void setNextReader(AtomicReaderContext context) {
+ base = context.docBase;
}
@Override
public boolean acceptsDocsOutOfOrder() {
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java Thu Jan 13 19:53:21 2011
@@ -28,6 +28,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
@@ -114,7 +115,7 @@ public class TestDocIdSet extends Lucene
// Now search w/ a Filter which returns a null DocIdSet
Filter f = new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
+ public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
return null;
}
};
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java Thu Jan 13 19:53:21 2011
@@ -21,6 +21,7 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.FieldValueHitQueue.Entry;
import org.apache.lucene.store.*;
import org.apache.lucene.util.LuceneTestCase;
@@ -177,8 +178,8 @@ class ElevationComparatorSource extends
}
@Override
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- idIndex = FieldCache.DEFAULT.getTermsIndex(reader, fieldname);
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ idIndex = FieldCache.DEFAULT.getTermsIndex(context.reader, fieldname);
return this;
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFieldCache.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFieldCache.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFieldCache.java Thu Jan 13 19:53:21 2011
@@ -180,7 +180,14 @@ public class TestFieldCache extends Luce
assertEquals(val2, val1);
}
-
+ // seek the enum around (note this isn't a great test here)
+ for (int i = 0; i < 100 * RANDOM_MULTIPLIER; i++) {
+ int k = _TestUtil.nextInt(random, 1, nTerms-1);
+ BytesRef val1 = termsIndex.lookup(k, val);
+ assertEquals(TermsEnum.SeekStatus.FOUND, tenum.seek(val1));
+ assertEquals(val1, tenum.term());
+ }
+
// test bad field
termsIndex = cache.getTermsIndex(reader, "bogusfield");
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java Thu Jan 13 19:53:21 2011
@@ -20,6 +20,7 @@ package org.apache.lucene.search;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause.Occur;
@@ -87,7 +88,7 @@ public class TestFilteredQuery extends L
private static Filter newStaticFilterB() {
return new Filter() {
@Override
- public DocIdSet getDocIdSet (IndexReader reader) {
+ public DocIdSet getDocIdSet (AtomicReaderContext context) {
BitSet bitset = new BitSet(5);
bitset.set (1);
bitset.set (3);
@@ -158,7 +159,7 @@ public class TestFilteredQuery extends L
private static Filter newStaticFilterA() {
return new Filter() {
@Override
- public DocIdSet getDocIdSet (IndexReader reader) {
+ public DocIdSet getDocIdSet (AtomicReaderContext context) {
BitSet bitset = new BitSet(5);
bitset.set(0, 5);
return new DocIdBitSet(bitset);
@@ -216,7 +217,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(random, query,searcher);
+ QueryUtils.check(random, query, searcher);
}
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredSearch.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredSearch.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestFilteredSearch.java Thu Jan 13 19:53:21 2011
@@ -25,6 +25,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
@@ -33,6 +34,7 @@ import org.apache.lucene.store.LockObtai
import org.apache.lucene.util.OpenBitSet;
+
/**
*
*/
@@ -59,7 +61,7 @@ public class TestFilteredSearch extends
directory.close();
}
- public void searchFiltered(IndexWriter writer, Directory directory, SimpleDocIdSetFilter filter, boolean optimize) {
+ public void searchFiltered(IndexWriter writer, Directory directory, Filter filter, boolean optimize) {
try {
for (int i = 0; i < 60; i++) {//Simple docs
Document doc = new Document();
@@ -75,7 +77,6 @@ public class TestFilteredSearch extends
IndexSearcher indexSearcher = new IndexSearcher(directory, true);
- filter.setTopReader(indexSearcher.getIndexReader());
ScoreDoc[] hits = indexSearcher.search(booleanQuery, filter, 1000).scoreDocs;
assertEquals("Number of matched documents", 1, hits.length);
indexSearcher.close();
@@ -89,20 +90,17 @@ public class TestFilteredSearch extends
public static final class SimpleDocIdSetFilter extends Filter {
private final int[] docs;
private int index;
- private IndexReader topReader;
+
public SimpleDocIdSetFilter(int[] docs) {
this.docs = docs;
}
- public void setTopReader(IndexReader r) {
- topReader = r;
- }
-
@Override
- public DocIdSet getDocIdSet(IndexReader reader) {
+ public DocIdSet getDocIdSet(AtomicReaderContext context) {
+ assert context.isAtomic;
final OpenBitSet set = new OpenBitSet();
- int docBase = topReader.getSubReaderDocBase(reader);
- final int limit = docBase+reader.maxDoc();
+ int docBase = context.docBase;
+ final int limit = docBase+context.reader.maxDoc();
for (;index < docs.length; index++) {
final int docId = docs[index];
if(docId > limit)
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java Thu Jan 13 19:53:21 2011
@@ -69,7 +69,7 @@ public class TestMatchAllDocsQuery exten
assertEquals("one", ir.document(hits[2].doc).get("key"));
// change norm & retest
- ir.setNorm(0, "key", 400f);
+ ir.setNorm(0, "key", Similarity.getDefault().encodeNormValue(400f));
normsQuery = new MatchAllDocsQuery("key");
hits = is.search(normsQuery, null, 1000).scoreDocs;
assertEquals(3, hits.length);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java Thu Jan 13 19:53:21 2011
@@ -22,6 +22,7 @@ import org.apache.lucene.analysis.MockTo
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
@@ -197,8 +198,8 @@ public class TestMultiTermConstantScore
assertEquals("score for doc " + (doc + base) + " was not correct", 1.0f, scorer.score());
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {
- base = docBase;
+ public void setNextReader(AtomicReaderContext context) {
+ base = context.docBase;
}
@Override
public boolean acceptsDocsOutOfOrder() {
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java Thu Jan 13 19:53:21 2011
@@ -59,7 +59,7 @@ public class TestMultiValuedNumericRange
IndexReader reader = writer.getReader();
writer.close();
- Searcher searcher=new IndexSearcher(reader);
+ IndexSearcher searcher=new IndexSearcher(reader);
num = 50 * RANDOM_MULTIPLIER;
for (int i = 0; i < num; i++) {
int lower=random.nextInt(Integer.MAX_VALUE);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNot.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNot.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNot.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNot.java Thu Jan 13 19:53:21 2011
@@ -44,7 +44,7 @@ public class TestNot extends LuceneTestC
writer.addDocument(d1);
IndexReader reader = writer.getReader();
- Searcher searcher = new IndexSearcher(reader);
+ IndexSearcher searcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser(TEST_VERSION_CURRENT, "field", new MockAnalyzer());
Query query = parser.parse("a NOT b");
//System.out.println(query);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java Thu Jan 13 19:53:21 2011
@@ -22,9 +22,11 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumericField;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.store.Directory;
@@ -32,10 +34,9 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.NumericUtils;
import org.apache.lucene.util._TestUtil;
-
-import org.junit.Test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Test;
public class TestNumericRangeQuery32 extends LuceneTestCase {
// distance of entries
@@ -176,14 +177,15 @@ public class TestNumericRangeQuery32 ext
@Test
public void testInverseRange() throws Exception {
+ AtomicReaderContext context = (AtomicReaderContext) new SlowMultiReaderWrapper(searcher.getIndexReader()).getTopReaderContext();
NumericRangeFilter<Integer> f = NumericRangeFilter.newIntRange("field8", 8, 1000, -1000, true, true);
- assertSame("A inverse range should return the EMPTY_DOCIDSET instance", DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(searcher.getIndexReader()));
+ assertSame("A inverse range should return the EMPTY_DOCIDSET instance", DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(context));
f = NumericRangeFilter.newIntRange("field8", 8, Integer.MAX_VALUE, null, false, false);
assertSame("A exclusive range starting with Integer.MAX_VALUE should return the EMPTY_DOCIDSET instance",
- DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(searcher.getIndexReader()));
+ DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(context));
f = NumericRangeFilter.newIntRange("field8", 8, null, Integer.MIN_VALUE, false, false);
assertSame("A exclusive range ending with Integer.MIN_VALUE should return the EMPTY_DOCIDSET instance",
- DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(searcher.getIndexReader()));
+ DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(context));
}
@Test
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java Thu Jan 13 19:53:21 2011
@@ -24,15 +24,16 @@ import org.apache.lucene.document.Numeri
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.index.SlowMultiReaderWrapper;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.NumericUtils;
import org.apache.lucene.util._TestUtil;
-
-import org.junit.Test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Test;
public class TestNumericRangeQuery64 extends LuceneTestCase {
// distance of entries
@@ -181,14 +182,16 @@ public class TestNumericRangeQuery64 ext
@Test
public void testInverseRange() throws Exception {
+ AtomicReaderContext context = (AtomicReaderContext) new SlowMultiReaderWrapper(searcher.getIndexReader()).getTopReaderContext();
NumericRangeFilter<Long> f = NumericRangeFilter.newLongRange("field8", 8, 1000L, -1000L, true, true);
- assertSame("A inverse range should return the EMPTY_DOCIDSET instance", DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(searcher.getIndexReader()));
+ assertSame("A inverse range should return the EMPTY_DOCIDSET instance", DocIdSet.EMPTY_DOCIDSET,
+ f.getDocIdSet(context));
f = NumericRangeFilter.newLongRange("field8", 8, Long.MAX_VALUE, null, false, false);
assertSame("A exclusive range starting with Long.MAX_VALUE should return the EMPTY_DOCIDSET instance",
- DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(searcher.getIndexReader()));
+ DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(context));
f = NumericRangeFilter.newLongRange("field8", 8, null, Long.MIN_VALUE, false, false);
assertSame("A exclusive range ending with Long.MIN_VALUE should return the EMPTY_DOCIDSET instance",
- DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(searcher.getIndexReader()));
+ DocIdSet.EMPTY_DOCIDSET, f.getDocIdSet(context));
}
@Test
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java Thu Jan 13 19:53:21 2011
@@ -352,7 +352,7 @@ public class TestPhraseQuery extends Luc
IndexReader reader = writer.getReader();
writer.close();
- Searcher searcher = new IndexSearcher(reader);
+ IndexSearcher searcher = new IndexSearcher(reader);
PhraseQuery query = new PhraseQuery();
query.add(new Term("field", "firstname"));
query.add(new Term("field", "lastname"));
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom.java Thu Jan 13 19:53:21 2011
@@ -38,7 +38,7 @@ import org.apache.lucene.util._TestUtil;
* and validates the correct number of hits are returned.
*/
public class TestRegexpRandom extends LuceneTestCase {
- private Searcher searcher;
+ private IndexSearcher searcher;
private IndexReader reader;
private Directory dir;
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java Thu Jan 13 19:53:21 2011
@@ -49,7 +49,7 @@ import org.apache.lucene.util.automaton.
* Generates random regexps, and validates against a simple impl.
*/
public class TestRegexpRandom2 extends LuceneTestCase {
- private IndexSearcher searcher;
+ protected IndexSearcher searcher;
private IndexReader reader;
private Directory dir;
@@ -146,7 +146,7 @@ public class TestRegexpRandom2 extends L
/** check that the # of hits is the same as from a very
* simple regexpquery implementation.
*/
- private void assertSame(String regexp) throws IOException {
+ protected void assertSame(String regexp) throws IOException {
RegexpQuery smart = new RegexpQuery(new Term("field", regexp), RegExp.NONE);
DumbRegexpQuery dumb = new DumbRegexpQuery(new Term("field", regexp), RegExp.NONE);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java Thu Jan 13 19:53:21 2011
@@ -19,7 +19,7 @@ package org.apache.lucene.search;
import java.io.IOException;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.LuceneTestCase;
public class TestScoreCachingWrappingScorer extends LuceneTestCase {
@@ -76,7 +76,7 @@ public class TestScoreCachingWrappingSco
++idx;
}
- @Override public void setNextReader(IndexReader reader, int docBase)
+ @Override public void setNextReader(AtomicReaderContext context)
throws IOException {
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScorerPerf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScorerPerf.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScorerPerf.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestScorerPerf.java Thu Jan 13 19:53:21 2011
@@ -6,7 +6,7 @@ import org.apache.lucene.util.LuceneTest
import java.util.BitSet;
import java.io.IOException;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
@@ -109,8 +109,8 @@ public class TestScorerPerf extends Luce
public int getSum() { return sum; }
@Override
- public void setNextReader(IndexReader reader, int base) {
- docBase = base;
+ public void setNextReader(AtomicReaderContext context) {
+ docBase = context.docBase;
}
@Override
public boolean acceptsDocsOutOfOrder() {
@@ -141,7 +141,7 @@ public class TestScorerPerf extends Luce
final BitSet rnd = sets[random.nextInt(sets.length)];
Query q = new ConstantScoreQuery(new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) {
+ public DocIdSet getDocIdSet(AtomicReaderContext context) {
return new DocIdBitSet(rnd);
}
});
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java Thu Jan 13 19:53:21 2011
@@ -23,6 +23,7 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
@@ -50,10 +51,10 @@ public class TestSetNorm extends LuceneT
// reset the boost of each instance of this document
IndexReader reader = IndexReader.open(store, false);
- reader.setNorm(0, "field", 1.0f);
- reader.setNorm(1, "field", 2.0f);
- reader.setNorm(2, "field", 4.0f);
- reader.setNorm(3, "field", 16.0f);
+ reader.setNorm(0, "field", Similarity.getDefault().encodeNormValue(1.0f));
+ reader.setNorm(1, "field", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(2, "field", Similarity.getDefault().encodeNormValue(4.0f));
+ reader.setNorm(3, "field", Similarity.getDefault().encodeNormValue(16.0f));
reader.close();
// check that searches are ordered by this boost
@@ -74,8 +75,8 @@ public class TestSetNorm extends LuceneT
scores[doc + base] = scorer.score();
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {
- base = docBase;
+ public void setNextReader(AtomicReaderContext context) {
+ base = context.docBase;
}
@Override
public boolean acceptsDocsOutOfOrder() {
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java Thu Jan 13 19:53:21 2011
@@ -21,7 +21,9 @@ import org.apache.lucene.util.LuceneTest
import java.io.IOException;
import java.util.Collection;
+import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
@@ -38,13 +40,13 @@ import org.apache.lucene.search.Explanat
public class TestSimilarity extends LuceneTestCase {
public static class SimpleSimilarity extends Similarity {
- @Override public float lengthNorm(String field, int numTerms) { return 1.0f; }
+ @Override public float computeNorm(String field, FieldInvertState state) { return state.getBoost(); }
@Override public float queryNorm(float sumOfSquaredWeights) { return 1.0f; }
@Override public float tf(float freq) { return freq; }
@Override public float sloppyFreq(int distance) { return 2.0f; }
@Override public float idf(int docFreq, int numDocs) { return 1.0f; }
@Override public float coord(int overlap, int maxOverlap) { return 1.0f; }
- @Override public IDFExplanation idfExplain(Collection<Term> terms, Searcher searcher) throws IOException {
+ @Override public IDFExplanation idfExplain(Collection<Term> terms, IndexSearcher searcher) throws IOException {
return new IDFExplanation() {
@Override
public float getIdf() {
@@ -75,7 +77,7 @@ public class TestSimilarity extends Luce
IndexReader reader = writer.getReader();
writer.close();
- Searcher searcher = new IndexSearcher(reader);
+ IndexSearcher searcher = new IndexSearcher(reader);
searcher.setSimilarity(new SimpleSimilarity());
Term a = new Term("field", "a");
@@ -93,7 +95,7 @@ public class TestSimilarity extends Luce
assertEquals(1.0f, scorer.score());
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {}
+ public void setNextReader(AtomicReaderContext context) {}
@Override
public boolean acceptsDocsOutOfOrder() {
return true;
@@ -117,8 +119,8 @@ public class TestSimilarity extends Luce
assertEquals((float)doc+base+1, scorer.score());
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {
- base = docBase;
+ public void setNextReader(AtomicReaderContext context) {
+ base = context.docBase;
}
@Override
public boolean acceptsDocsOutOfOrder() {
@@ -143,7 +145,7 @@ public class TestSimilarity extends Luce
assertEquals(1.0f, scorer.score());
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {}
+ public void setNextReader(AtomicReaderContext context) {}
@Override
public boolean acceptsDocsOutOfOrder() {
return true;
@@ -164,7 +166,7 @@ public class TestSimilarity extends Luce
assertEquals(2.0f, scorer.score());
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {}
+ public void setNextReader(AtomicReaderContext context) {}
@Override
public boolean acceptsDocsOutOfOrder() {
return true;
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimpleExplanations.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimpleExplanations.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimpleExplanations.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimpleExplanations.java Thu Jan 13 19:53:21 2011
@@ -17,18 +17,6 @@ package org.apache.lucene.search;
* limitations under the License.
*/
-import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.spans.SpanNearQuery;
-import org.apache.lucene.search.spans.SpanQuery;
-import org.apache.lucene.search.spans.SpanTermQuery;
-import org.apache.lucene.store.Directory;
-
-
/**
* TestExplanations subclass focusing on basic query types
*/
@@ -301,73 +289,4 @@ public class TestSimpleExplanations exte
qtest(q, new int[] { 0,3 });
}
-
-
- public void testTermQueryMultiSearcherExplain() throws Exception {
- // creating two directories for indices
- Directory indexStoreA = newDirectory();
- Directory indexStoreB = newDirectory();
-
- Document lDoc = new Document();
- lDoc.add(newField("handle", "1 2", Field.Store.YES, Field.Index.ANALYZED));
- Document lDoc2 = new Document();
- lDoc2.add(newField("handle", "1 2", Field.Store.YES, Field.Index.ANALYZED));
- Document lDoc3 = new Document();
- lDoc3.add(newField("handle", "1 2", Field.Store.YES, Field.Index.ANALYZED));
-
- IndexWriter writerA = new IndexWriter(indexStoreA, newIndexWriterConfig(
- TEST_VERSION_CURRENT, new MockAnalyzer()));
- IndexWriter writerB = new IndexWriter(indexStoreB, newIndexWriterConfig(
- TEST_VERSION_CURRENT, new MockAnalyzer()));
-
- writerA.addDocument(lDoc);
- writerA.addDocument(lDoc2);
- writerA.optimize();
- writerA.close();
-
- writerB.addDocument(lDoc3);
- writerB.close();
-
- QueryParser parser = new QueryParser(TEST_VERSION_CURRENT, "fulltext", new MockAnalyzer());
- Query query = parser.parse("handle:1");
-
- Searcher[] searchers = new Searcher[2];
- searchers[0] = new IndexSearcher(indexStoreB, true);
- searchers[1] = new IndexSearcher(indexStoreA, true);
- Searcher mSearcher = new MultiSearcher(searchers);
- ScoreDoc[] hits = mSearcher.search(query, null, 1000).scoreDocs;
-
- assertEquals(3, hits.length);
-
- Explanation explain = mSearcher.explain(query, hits[0].doc);
- String exp = explain.toString(0);
- assertTrue(exp, exp.indexOf("maxDocs=3") > -1);
- assertTrue(exp, exp.indexOf("docFreq=3") > -1);
-
- query = parser.parse("handle:\"1 2\"");
- hits = mSearcher.search(query, null, 1000).scoreDocs;
-
- assertEquals(3, hits.length);
-
- explain = mSearcher.explain(query, hits[0].doc);
- exp = explain.toString(0);
- assertTrue(exp, exp.indexOf("1=3") > -1);
- assertTrue(exp, exp.indexOf("2=3") > -1);
-
- query = new SpanNearQuery(new SpanQuery[] {
- new SpanTermQuery(new Term("handle", "1")),
- new SpanTermQuery(new Term("handle", "2")) }, 0, true);
- hits = mSearcher.search(query, null, 1000).scoreDocs;
-
- assertEquals(3, hits.length);
-
- explain = mSearcher.explain(query, hits[0].doc);
- exp = explain.toString(0);
- assertTrue(exp, exp.indexOf("1=3") > -1);
- assertTrue(exp, exp.indexOf("2=3") > -1);
- mSearcher.close();
- indexStoreA.close();
- indexStoreB.close();
- }
-
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSort.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSort.java Thu Jan 13 19:53:21 2011
@@ -34,11 +34,12 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.MultiReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
-import org.apache.lucene.util.BytesRef;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.FieldValueHitQueue.Entry;
@@ -49,8 +50,9 @@ import org.apache.lucene.search.cache.Fl
import org.apache.lucene.search.cache.IntValuesCreator;
import org.apache.lucene.search.cache.LongValuesCreator;
import org.apache.lucene.search.cache.ShortValuesCreator;
-import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.LockObtainFailedException;
+import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.DocIdBitSet;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
@@ -456,7 +458,7 @@ public class TestSort extends LuceneTest
// test sorts when there's nothing in the index
public void testEmptyIndex() throws Exception {
- Searcher empty = getEmptyIndex();
+ IndexSearcher empty = getEmptyIndex();
sort = new Sort();
assertMatches (empty, queryX, sort, "");
@@ -504,8 +506,8 @@ public class TestSort extends LuceneTest
}
@Override
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- docValues = FieldCache.DEFAULT.getInts(reader, "parser", new FieldCache.IntParser() {
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ docValues = FieldCache.DEFAULT.getInts(context.reader, "parser", new FieldCache.IntParser() {
public final int parseInt(final BytesRef term) {
return (term.bytes[term.offset]-'A') * 123456;
}
@@ -599,23 +601,9 @@ public class TestSort extends LuceneTest
new SortField ("float", SortField.FLOAT, true) );
assertMatches (full, queryG, sort, "ZYXW");
- // Do the same for a MultiSearcher
- Searcher multiSearcher=new MultiSearcher (full);
-
- sort.setSort (new SortField ("int", SortField.INT),
- new SortField ("string", SortField.STRING),
- new SortField ("float", SortField.FLOAT) );
- assertMatches (multiSearcher, queryG, sort, "ZWXY");
-
- sort.setSort (new SortField ("int", SortField.INT),
- new SortField ("string", SortField.STRING),
- new SortField ("float", SortField.FLOAT, true) );
- assertMatches (multiSearcher, queryG, sort, "ZYXW");
- // Don't close the multiSearcher. it would close the full searcher too!
-
// Do the same for a ParallelMultiSearcher
ExecutorService exec = Executors.newFixedThreadPool(_TestUtil.nextInt(random, 2, 8));
- Searcher parallelSearcher=new ParallelMultiSearcher (exec, full);
+ IndexSearcher parallelSearcher=new IndexSearcher (full.getIndexReader(), exec);
sort.setSort (new SortField ("int", SortField.INT),
new SortField ("string", SortField.STRING),
@@ -627,6 +615,7 @@ public class TestSort extends LuceneTest
new SortField ("float", SortField.FLOAT, true) );
assertMatches (parallelSearcher, queryG, sort, "ZYXW");
parallelSearcher.close();
+ exec.shutdown();
exec.awaitTermination(1000, TimeUnit.MILLISECONDS);
}
@@ -672,117 +661,19 @@ public class TestSort extends LuceneTest
assertMatches (full, queryX, sort, "EACGI");
}
- // Test the MultiSearcher's ability to preserve locale-sensitive ordering
- // by wrapping it around a single searcher
- public void testInternationalMultiSearcherSort() throws Exception {
- Searcher multiSearcher = new MultiSearcher (full);
-
- sort.setSort (new SortField ("i18n", new Locale("sv", "se")));
- assertMatches (multiSearcher, queryY, sort, "BJDFH");
-
- sort.setSort (new SortField ("i18n", Locale.US));
- assertMatches (multiSearcher, queryY, sort, oStrokeFirst ? "BFJHD" : "BFJDH");
-
- sort.setSort (new SortField ("i18n", new Locale("da", "dk")));
- assertMatches (multiSearcher, queryY, sort, "BJDHF");
- }
-
- // test a variety of sorts using more than one searcher
- public void testMultiSort() throws Exception {
- MultiSearcher searcher = new MultiSearcher (searchX, searchY);
- runMultiSorts(searcher, false);
- }
-
// test a variety of sorts using a parallel multisearcher
public void testParallelMultiSort() throws Exception {
ExecutorService exec = Executors.newFixedThreadPool(_TestUtil.nextInt(random, 2, 8));
- Searcher searcher = new ParallelMultiSearcher (exec, searchX, searchY);
+ IndexSearcher searcher = new IndexSearcher(
+ new MultiReader(
+ new IndexReader[] {searchX.getIndexReader(),
+ searchY.getIndexReader()}), exec);
runMultiSorts(searcher, false);
searcher.close();
+ exec.shutdown();
exec.awaitTermination(1000, TimeUnit.MILLISECONDS);
}
- // test that the relevancy scores are the same even if
- // hits are sorted
- public void testNormalizedScores() throws Exception {
-
- // capture relevancy scores
- HashMap<String,Float> scoresX = getScores (full.search (queryX, null, 1000).scoreDocs, full);
- HashMap<String,Float> scoresY = getScores (full.search (queryY, null, 1000).scoreDocs, full);
- HashMap<String,Float> scoresA = getScores (full.search (queryA, null, 1000).scoreDocs, full);
-
- // we'll test searching locally, remote and multi
-
- MultiSearcher multi = new MultiSearcher (searchX, searchY);
-
- // change sorting and make sure relevancy stays the same
-
- sort = new Sort();
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort(SortField.FIELD_DOC);
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort (new SortField("int", SortField.INT));
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort (new SortField("float", SortField.FLOAT));
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort (new SortField("string", SortField.STRING));
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort (new SortField("int", SortField.INT),new SortField("float", SortField.FLOAT));
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort (new SortField ("int", SortField.INT, true), new SortField (null, SortField.DOC, true) );
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- sort.setSort (new SortField("int", SortField.INT),new SortField("string", SortField.STRING));
- assertSameValues (scoresX, getScores (full.search (queryX, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresX, getScores (multi.search (queryX, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresY, getScores (full.search (queryY, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresY, getScores (multi.search (queryY, null, 1000, sort).scoreDocs, multi));
- assertSameValues (scoresA, getScores (full.search (queryA, null, 1000, sort).scoreDocs, full));
- assertSameValues (scoresA, getScores (multi.search (queryA, null, 1000, sort).scoreDocs, multi));
-
- }
-
public void testTopDocsScores() throws Exception {
// There was previously a bug in FieldSortedHitQueue.maxscore when only a single
@@ -797,9 +688,9 @@ public class TestSort extends LuceneTest
// a filter that only allows through the first hit
Filter filt = new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
- BitSet bs = new BitSet(reader.maxDoc());
- bs.set(0, reader.maxDoc());
+ public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
+ BitSet bs = new BitSet(context.reader.maxDoc());
+ bs.set(0, context.reader.maxDoc());
bs.set(docs1.scoreDocs[0].doc);
return new DocIdBitSet(bs);
}
@@ -1024,7 +915,7 @@ public class TestSort extends LuceneTest
}
// runs a variety of sorts useful for multisearchers
- private void runMultiSorts(Searcher multi, boolean isFull) throws Exception {
+ private void runMultiSorts(IndexSearcher multi, boolean isFull) throws Exception {
sort.setSort(SortField.FIELD_DOC);
String expected = isFull ? "ABCDEFGHIJ" : "ACEGIBDFHJ";
assertMatches(multi, queryA, sort, expected);
@@ -1101,12 +992,12 @@ public class TestSort extends LuceneTest
}
- private void assertMatches(Searcher searcher, Query query, Sort sort, String expectedResult) throws IOException {
+ private void assertMatches(IndexSearcher searcher, Query query, Sort sort, String expectedResult) throws IOException {
assertMatches( null, searcher, query, sort, expectedResult );
}
// make sure the documents returned by the search match the expected list
- private void assertMatches(String msg, Searcher searcher, Query query, Sort sort,
+ private void assertMatches(String msg, IndexSearcher searcher, Query query, Sort sort,
String expectedResult) throws IOException {
//ScoreDoc[] result = searcher.search (query, null, 1000, sort).scoreDocs;
TopDocs hits = searcher.search (query, null, Math.max(1, expectedResult.length()), sort);
@@ -1124,7 +1015,7 @@ public class TestSort extends LuceneTest
assertEquals (msg, expectedResult, buff.toString());
}
- private HashMap<String,Float> getScores (ScoreDoc[] hits, Searcher searcher)
+ private HashMap<String,Float> getScores (ScoreDoc[] hits, IndexSearcher searcher)
throws IOException {
HashMap<String,Float> scoreMap = new HashMap<String,Float>();
int n = hits.length;
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSubScorerFreqs.java Thu Jan 13 19:53:21 2011
@@ -19,6 +19,7 @@ package org.apache.lucene.search;
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.*;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.Scorer.ScorerVisitor;
@@ -126,10 +127,10 @@ public class TestSubScorerFreqs extends
}
@Override
- public void setNextReader(IndexReader reader, int docBase)
+ public void setNextReader(AtomicReaderContext context)
throws IOException {
- this.docBase = docBase;
- other.setNextReader(reader, docBase);
+ docBase = context.docBase;
+ other.setNextReader(context);
}
@Override
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java Thu Jan 13 19:53:21 2011
@@ -134,7 +134,7 @@ public class TestTermRangeQuery extends
searcher.close();
}
- private void checkBooleanTerms(Searcher searcher, TermRangeQuery query, String... terms) throws IOException {
+ private void checkBooleanTerms(IndexSearcher searcher, TermRangeQuery query, String... terms) throws IOException {
query.setRewriteMethod(new MultiTermQuery.TopTermsScoringBooleanQueryRewrite(50));
final BooleanQuery bq = (BooleanQuery) searcher.rewrite(query);
final Set<String> allowedTerms = asSet(terms);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermScorer.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestTermScorer.java Thu Jan 13 19:53:21 2011
@@ -28,6 +28,8 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.SlowMultiReaderWrapper;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.search.Weight.ScorerContext;
import org.apache.lucene.store.Directory;
public class TestTermScorer extends LuceneTestCase {
@@ -70,8 +72,8 @@ public class TestTermScorer extends Luce
TermQuery termQuery = new TermQuery(allTerm);
Weight weight = termQuery.weight(indexSearcher);
-
- Scorer ts = weight.scorer(indexSearcher.getIndexReader(), true, true);
+ assertTrue(indexSearcher.getTopReaderContext().isAtomic);
+ Scorer ts = weight.scorer((AtomicReaderContext)indexSearcher.getTopReaderContext(), ScorerContext.def().scoreDocsInOrder(true).topScorer(true));
// we have 2 documents with the term all in them, one document for all the
// other values
final List<TestHit> docs = new ArrayList<TestHit>();
@@ -97,8 +99,8 @@ public class TestTermScorer extends Luce
}
@Override
- public void setNextReader(IndexReader reader, int docBase) {
- base = docBase;
+ public void setNextReader(AtomicReaderContext context) {
+ base = context.docBase;
}
@Override
@@ -131,8 +133,8 @@ public class TestTermScorer extends Luce
TermQuery termQuery = new TermQuery(allTerm);
Weight weight = termQuery.weight(indexSearcher);
-
- Scorer ts = weight.scorer(indexSearcher.getIndexReader(), true, true);
+ assertTrue(indexSearcher.getTopReaderContext().isAtomic);
+ Scorer ts = weight.scorer((AtomicReaderContext) indexSearcher.getTopReaderContext(), ScorerContext.def().scoreDocsInOrder(true).topScorer(true));
assertTrue("next did not return a doc",
ts.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertTrue("score is not correct", ts.score() == 1.6931472f);
@@ -149,8 +151,9 @@ public class TestTermScorer extends Luce
TermQuery termQuery = new TermQuery(allTerm);
Weight weight = termQuery.weight(indexSearcher);
-
- Scorer ts = weight.scorer(indexSearcher.getIndexReader(), true, true);
+ assertTrue(indexSearcher.getTopReaderContext().isAtomic);
+
+ Scorer ts = weight.scorer((AtomicReaderContext) indexSearcher.getTopReaderContext(), ScorerContext.def().scoreDocsInOrder(true).topScorer(true));
assertTrue("Didn't skip", ts.advance(3) != DocIdSetIterator.NO_MORE_DOCS);
// The next doc should be doc 5
assertTrue("doc should be number 5", ts.docID() == 5);