You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2013/05/07 13:21:14 UTC
svn commit: r1479862 [17/38] - in /lucene/dev/branches/lucene4258: ./
dev-tools/ dev-tools/idea/.idea/ dev-tools/idea/.idea/libraries/
dev-tools/maven/ dev-tools/maven/solr/ dev-tools/maven/solr/core/src/java/
dev-tools/maven/solr/solrj/src/java/ dev-t...
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java Tue May 7 11:20:55 2013
@@ -18,8 +18,9 @@ package org.apache.lucene.index;
*/
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.Map;
+import java.util.List;
import java.util.Random;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -28,7 +29,6 @@ import org.apache.lucene.document.FieldT
import org.apache.lucene.document.TextField;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.ThreadInterruptedException;
import org.junit.Test;
@@ -63,30 +63,33 @@ public class TestSnapshotDeletionPolicy
}
}
+ protected List<IndexCommit> snapshots = new ArrayList<IndexCommit>();
+
protected void prepareIndexAndSnapshots(SnapshotDeletionPolicy sdp,
- IndexWriter writer, int numSnapshots, String snapshotPrefix)
+ IndexWriter writer, int numSnapshots)
throws RuntimeException, IOException {
for (int i = 0; i < numSnapshots; i++) {
// create dummy document to trigger commit.
writer.addDocument(new Document());
writer.commit();
- sdp.snapshot(snapshotPrefix + i);
+ snapshots.add(sdp.snapshot());
}
}
protected SnapshotDeletionPolicy getDeletionPolicy() throws IOException {
- return getDeletionPolicy(null);
- }
-
- protected SnapshotDeletionPolicy getDeletionPolicy(Map<String, String> snapshots) throws IOException {
- return new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy(), snapshots);
+ return new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy());
}
- protected void assertSnapshotExists(Directory dir, SnapshotDeletionPolicy sdp, int numSnapshots) throws Exception {
+ protected void assertSnapshotExists(Directory dir, SnapshotDeletionPolicy sdp, int numSnapshots, boolean checkIndexCommitSame) throws Exception {
for (int i = 0; i < numSnapshots; i++) {
- IndexCommit snapshot = sdp.getSnapshot("snapshot" + i);
+ IndexCommit snapshot = snapshots.get(i);
checkMaxDoc(snapshot, i + 1);
checkSnapshotExists(dir, snapshot);
+ if (checkIndexCommitSame) {
+ assertSame(snapshot, sdp.getIndexCommit(snapshot.getGeneration()));
+ } else {
+ assertEquals(snapshot.getGeneration(), sdp.getIndexCommit(snapshot.getGeneration()).getGeneration());
+ }
}
}
@@ -105,6 +108,15 @@ public class TestSnapshotDeletionPolicy
final IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(
TEST_VERSION_CURRENT, new MockAnalyzer(random)).setIndexDeletionPolicy(dp)
.setMaxBufferedDocs(2));
+
+ // Verify we catch misuse:
+ try {
+ dp.snapshot();
+ fail("did not hit exception");
+ } catch(IllegalStateException ise) {
+ // expected
+ }
+ dp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
writer.commit();
final Thread t = new Thread() {
@@ -177,13 +189,14 @@ public class TestSnapshotDeletionPolicy
*/
public void backupIndex(Directory dir, SnapshotDeletionPolicy dp) throws Exception {
// To backup an index we first take a snapshot:
+ IndexCommit snapshot = dp.snapshot();
try {
- copyFiles(dir, dp.snapshot("id"));
+ copyFiles(dir, snapshot);
} finally {
// Make sure to release the snapshot, otherwise these
// files will never be deleted during this IndexWriter
// session:
- dp.release("id");
+ dp.release(snapshot);
}
}
@@ -235,18 +248,20 @@ public class TestSnapshotDeletionPolicy
@Test
public void testBasicSnapshots() throws Exception {
int numSnapshots = 3;
- SnapshotDeletionPolicy sdp = getDeletionPolicy();
// Create 3 snapshots: snapshot0, snapshot1, snapshot2
Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
- prepareIndexAndSnapshots(sdp, writer, numSnapshots, "snapshot");
+ IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
+ SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
+ prepareIndexAndSnapshots(sdp, writer, numSnapshots);
writer.close();
- assertSnapshotExists(dir, sdp, numSnapshots);
+ assertEquals(numSnapshots, sdp.getSnapshots().size());
+ assertEquals(numSnapshots, sdp.getSnapshotCount());
+ assertSnapshotExists(dir, sdp, numSnapshots, true);
// open a reader on a snapshot - should succeed.
- DirectoryReader.open(sdp.getSnapshot("snapshot0")).close();
+ DirectoryReader.open(snapshots.get(0)).close();
// open a new IndexWriter w/ no snapshots to keep and assert that all snapshots are gone.
sdp = getDeletionPolicy();
@@ -254,33 +269,26 @@ public class TestSnapshotDeletionPolicy
writer.deleteUnusedFiles();
writer.close();
assertEquals("no snapshots should exist", 1, DirectoryReader.listCommits(dir).size());
-
- for (int i = 0; i < numSnapshots; i++) {
- try {
- sdp.getSnapshot("snapshot" + i);
- fail("snapshot shouldn't have existed, but did: snapshot" + i);
- } catch (IllegalStateException e) {
- // expected - snapshot should not exist
- }
- }
dir.close();
}
@Test
public void testMultiThreadedSnapshotting() throws Exception {
Directory dir = newDirectory();
- final SnapshotDeletionPolicy sdp = getDeletionPolicy();
- final IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
+ final IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
+ final SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
Thread[] threads = new Thread[10];
+ final IndexCommit[] snapshots = new IndexCommit[threads.length];
for (int i = 0; i < threads.length; i++) {
+ final int finalI = i;
threads[i] = new Thread() {
@Override
public void run() {
try {
writer.addDocument(new Document());
writer.commit();
- sdp.snapshot(getName());
+ snapshots[finalI] = sdp.snapshot();
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -301,8 +309,8 @@ public class TestSnapshotDeletionPolicy
writer.addDocument(new Document());
writer.commit();
- for (Thread t : threads) {
- sdp.release(t.getName());
+ for (int i=0;i<threads.length;i++) {
+ sdp.release(snapshots[i]);
writer.deleteUnusedFiles();
}
assertEquals(1, DirectoryReader.listCommits(dir).size());
@@ -315,21 +323,22 @@ public class TestSnapshotDeletionPolicy
int numSnapshots = 2;
Directory dir = newDirectory();
- SnapshotDeletionPolicy sdp = getDeletionPolicy();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
- prepareIndexAndSnapshots(sdp, writer, numSnapshots, "snapshot");
+ IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
+ SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
+ prepareIndexAndSnapshots(sdp, writer, numSnapshots);
writer.close();
// now open the writer on "snapshot0" - make sure it succeeds
- writer = new IndexWriter(dir, getConfig(random(), sdp).setIndexCommit(sdp.getSnapshot("snapshot0")));
+ writer = new IndexWriter(dir, getConfig(random(), sdp).setIndexCommit(snapshots.get(0)));
// this does the actual rollback
writer.commit();
writer.deleteUnusedFiles();
- assertSnapshotExists(dir, sdp, numSnapshots - 1);
+ //sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
+ assertSnapshotExists(dir, sdp, numSnapshots - 1, true);
writer.close();
// but 'snapshot1' files will still exist (need to release snapshot before they can be deleted).
- String segFileName = sdp.getSnapshot("snapshot1").getSegmentsFileName();
+ String segFileName = snapshots.get(1).getSegmentsFileName();
assertTrue("snapshot files should exist in the directory: " + segFileName, dir.fileExists(segFileName));
dir.close();
@@ -338,9 +347,9 @@ public class TestSnapshotDeletionPolicy
@Test
public void testReleaseSnapshot() throws Exception {
Directory dir = newDirectory();
- SnapshotDeletionPolicy sdp = getDeletionPolicy();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
- prepareIndexAndSnapshots(sdp, writer, 1, "snapshot");
+ IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
+ SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
+ prepareIndexAndSnapshots(sdp, writer, 1);
// Create another commit - we must do that, because otherwise the "snapshot"
// files will still remain in the index, since it's the last commit.
@@ -348,16 +357,8 @@ public class TestSnapshotDeletionPolicy
writer.commit();
// Release
- String snapId = "snapshot0";
- String segFileName = sdp.getSnapshot(snapId).getSegmentsFileName();
- sdp.release(snapId);
- try {
- sdp.getSnapshot(snapId);
- fail("should not have succeeded to get an unsnapshotted id");
- } catch (IllegalStateException e) {
- // expected
- }
- assertNull(sdp.getSnapshots().get(snapId));
+ String segFileName = snapshots.get(0).getSegmentsFileName();
+ sdp.release(snapshots.get(0));
writer.deleteUnusedFiles();
writer.close();
assertFalse("segments file should not be found in dirctory: " + segFileName, dir.fileExists(segFileName));
@@ -365,40 +366,17 @@ public class TestSnapshotDeletionPolicy
}
@Test
- public void testExistingSnapshots() throws Exception {
- // Tests the ability to construct a SDP from existing snapshots, and
- // asserts that those snapshots/commit points are protected.
- int numSnapshots = 3;
- Directory dir = newDirectory();
- SnapshotDeletionPolicy sdp = getDeletionPolicy();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
- prepareIndexAndSnapshots(sdp, writer, numSnapshots, "snapshot");
- writer.close();
-
- // Make a new policy and initialize with snapshots.
- sdp = getDeletionPolicy(sdp.getSnapshots());
- writer = new IndexWriter(dir, getConfig(random(), sdp));
- // attempt to delete unused files - the snapshotted files should not be deleted
- writer.deleteUnusedFiles();
- writer.close();
- assertSnapshotExists(dir, sdp, numSnapshots);
- dir.close();
- }
-
- @Test
public void testSnapshotLastCommitTwice() throws Exception {
Directory dir = newDirectory();
- SnapshotDeletionPolicy sdp = getDeletionPolicy();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
+ IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
+ SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
writer.addDocument(new Document());
writer.commit();
- String s1 = "s1";
- String s2 = "s2";
- IndexCommit ic1 = sdp.snapshot(s1);
- IndexCommit ic2 = sdp.snapshot(s2);
- assertTrue(ic1 == ic2); // should be the same instance
+ IndexCommit s1 = sdp.snapshot();
+ IndexCommit s2 = sdp.snapshot();
+ assertSame(s1, s2); // should be the same instance
// create another commit
writer.addDocument(new Document());
@@ -407,7 +385,7 @@ public class TestSnapshotDeletionPolicy
// release "s1" should not delete "s2"
sdp.release(s1);
writer.deleteUnusedFiles();
- checkSnapshotExists(dir, ic2);
+ checkSnapshotExists(dir, s2);
writer.close();
dir.close();
@@ -418,11 +396,11 @@ public class TestSnapshotDeletionPolicy
// Tests the behavior of SDP when commits that are given at ctor are missing
// on onInit().
Directory dir = newDirectory();
- SnapshotDeletionPolicy sdp = getDeletionPolicy();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
+ IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
+ SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
writer.addDocument(new Document());
writer.commit();
- IndexCommit ic = sdp.snapshot("s1");
+ IndexCommit s1 = sdp.snapshot();
// create another commit, not snapshotted.
writer.addDocument(new Document());
@@ -432,20 +410,7 @@ public class TestSnapshotDeletionPolicy
// commit.
new IndexWriter(dir, getConfig(random(), null)).close();
- assertFalse("snapshotted commit should not exist", dir.fileExists(ic.getSegmentsFileName()));
-
- // Now reinit SDP from the commits in the index - the snapshot id should not
- // exist anymore.
- sdp = getDeletionPolicy(sdp.getSnapshots());
- new IndexWriter(dir, getConfig(random(), sdp)).close();
-
- try {
- sdp.getSnapshot("s1");
- fail("snapshot s1 should not exist");
- } catch (IllegalStateException e) {
- // expected.
- }
+ assertFalse("snapshotted commit should not exist", dir.fileExists(s1.getSegmentsFileName()));
dir.close();
}
-
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing.java Tue May 7 11:20:55 2013
@@ -104,7 +104,7 @@ public class TestStressIndexing extends
public void doWork() throws Throwable {
for (int i=0; i<100; i++) {
IndexReader ir = DirectoryReader.open(directory);
- IndexSearcher is = new IndexSearcher(ir);
+ IndexSearcher is = newSearcher(ir);
ir.close();
}
count += 100;
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressNRT.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressNRT.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressNRT.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestStressNRT.java Tue May 7 11:20:55 2013
@@ -298,6 +298,9 @@ public class TestStressNRT extends Lucen
@Override
public void run() {
try {
+ IndexReader lastReader = null;
+ IndexSearcher lastSearcher = null;
+
while (operations.decrementAndGet() >= 0) {
// bias toward a recently changed doc
int id = rand.nextInt(100) < 25 ? lastId : rand.nextInt(ndocs);
@@ -318,7 +321,17 @@ public class TestStressNRT extends Lucen
}
// sreq = req("wt","json", "q","id:"+Integer.toString(id), "omitHeader","true");
- IndexSearcher searcher = new IndexSearcher(r);
+ IndexSearcher searcher;
+ if (r == lastReader) {
+ // Just re-use lastSearcher, else
+ // newSearcher may create too many thread
+ // pools (ExecutorService):
+ searcher = lastSearcher;
+ } else {
+ searcher = newSearcher(r);
+ lastReader = r;
+ lastSearcher = searcher;
+ }
Query q = new TermQuery(new Term("id",Integer.toString(id)));
TopDocs results = searcher.search(q, 10);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java Tue May 7 11:20:55 2013
@@ -229,7 +229,7 @@ public class TestTermVectorsReader exten
docsEnum = _TestUtil.docs(random(), termsEnum, null, docsEnum, DocsEnum.FLAG_NONE);
assertNotNull(docsEnum);
int doc = docsEnum.docID();
- assertTrue(doc == -1 || doc == DocIdSetIterator.NO_MORE_DOCS);
+ assertEquals(-1, doc);
assertTrue(docsEnum.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsEnum.nextDoc());
}
@@ -256,7 +256,7 @@ public class TestTermVectorsReader exten
dpEnum = termsEnum.docsAndPositions(null, dpEnum);
assertNotNull(dpEnum);
int doc = dpEnum.docID();
- assertTrue(doc == -1 || doc == DocIdSetIterator.NO_MORE_DOCS);
+ assertEquals(-1, doc);
assertTrue(dpEnum.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals(dpEnum.freq(), positions[i].length);
for (int j = 0; j < positions[i].length; j++) {
@@ -266,7 +266,7 @@ public class TestTermVectorsReader exten
dpEnum = termsEnum.docsAndPositions(null, dpEnum);
doc = dpEnum.docID();
- assertTrue(doc == -1 || doc == DocIdSetIterator.NO_MORE_DOCS);
+ assertEquals(-1, doc);
assertTrue(dpEnum.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertNotNull(dpEnum);
assertEquals(dpEnum.freq(), positions[i].length);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java Tue May 7 11:20:55 2013
@@ -213,7 +213,7 @@ public class TestTermVectorsWriter exten
public void testEndOffsetPositionStopFilter() throws Exception {
Directory dir = newDirectory();
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(
- TEST_VERSION_CURRENT, new MockAnalyzer(random(), MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET, true)));
+ TEST_VERSION_CURRENT, new MockAnalyzer(random(), MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET)));
Document doc = new Document();
FieldType customType = new FieldType(TextField.TYPE_NOT_STORED);
customType.setStoreTermVectors(true);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java Tue May 7 11:20:55 2013
@@ -156,7 +156,7 @@ public class TestTransactionRollback ext
}
// Rolls back to previous commit point
- class RollbackDeletionPolicy implements IndexDeletionPolicy {
+ class RollbackDeletionPolicy extends IndexDeletionPolicy {
private int rollbackPoint;
public RollbackDeletionPolicy(int rollbackPoint) {
@@ -196,7 +196,7 @@ public class TestTransactionRollback ext
}
}
- class DeleteLastCommitPolicy implements IndexDeletionPolicy {
+ class DeleteLastCommitPolicy extends IndexDeletionPolicy {
@Override
public void onCommit(List<? extends IndexCommit> commits) throws IOException {}
@@ -221,7 +221,7 @@ public class TestTransactionRollback ext
}
// Keeps all commit points (used to build index)
- class KeepAllDeletionPolicy implements IndexDeletionPolicy {
+ class KeepAllDeletionPolicy extends IndexDeletionPolicy {
@Override
public void onCommit(List<? extends IndexCommit> commits) throws IOException {}
@Override
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactions.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactions.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/index/TestTransactions.java Tue May 7 11:20:55 2013
@@ -181,13 +181,27 @@ public class TestTransactions extends Lu
@Override
public void doWork() throws Throwable {
- IndexReader r1, r2;
+ IndexReader r1=null, r2=null;
synchronized(lock) {
- r1 = DirectoryReader.open(dir1);
- r2 = DirectoryReader.open(dir2);
+ try {
+ r1 = DirectoryReader.open(dir1);
+ r2 = DirectoryReader.open(dir2);
+ } catch (IOException e) {
+ if (!e.getMessage().contains("on purpose")) {
+ throw e;
+ }
+ if (r1 != null) {
+ r1.close();
+ }
+ if (r2 != null) {
+ r2.close();
+ }
+ return;
+ }
}
- if (r1.numDocs() != r2.numDocs())
+ if (r1.numDocs() != r2.numDocs()) {
throw new RuntimeException("doc counts differ: r1=" + r1.numDocs() + " r2=" + r2.numDocs());
+ }
r1.close();
r2.close();
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java Tue May 7 11:20:55 2013
@@ -86,12 +86,22 @@ public class TestBooleanMinShouldMatch e
public void verifyNrHits(Query q, int expected) throws Exception {
+ // bs1
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
if (expected != h.length) {
printHits(getTestName(), h, s);
}
assertEquals("result count", expected, h.length);
//System.out.println("TEST: now check");
+ // bs2
+ TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
+ s.search(q, collector);
+ ScoreDoc[] h2 = collector.topDocs().scoreDocs;
+ if (expected != h2.length) {
+ printHits(getTestName(), h2, s);
+ }
+ assertEquals("result count (bs2)", expected, h2.length);
+
QueryUtils.check(random(), q,s);
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java Tue May 7 11:20:55 2013
@@ -164,7 +164,7 @@ public class TestBooleanQuery extends Lu
query.add(wildcardQuery, BooleanClause.Occur.MUST_NOT);
MultiReader multireader = new MultiReader(reader1, reader2);
- IndexSearcher searcher = new IndexSearcher(multireader);
+ IndexSearcher searcher = newSearcher(multireader);
assertEquals(0, searcher.search(query, 10).totalHits);
final ExecutorService es = Executors.newCachedThreadPool(new NamedThreadFactory("NRT search threads"));
@@ -307,7 +307,7 @@ public class TestBooleanQuery extends Lu
writer.close();
IndexReader indexReader = DirectoryReader.open(directory);
- IndexSearcher searcher = new IndexSearcher(indexReader);
+ IndexSearcher searcher = newSearcher(indexReader);
BooleanQuery query = new BooleanQuery();
SpanQuery sq1 = new SpanTermQuery(new Term(FIELD, "clockwork"));
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java Tue May 7 11:20:55 2013
@@ -61,7 +61,7 @@ public class TestBooleanQueryVisitSubsco
writer.addDocument(doc("nutch", "nutch is an internet search engine with web crawler and is using lucene and hadoop"));
reader = writer.getReader();
writer.close();
- searcher = new IndexSearcher(reader);
+ searcher = newSearcher(reader);
}
@Override
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java Tue May 7 11:20:55 2013
@@ -152,13 +152,12 @@ public class TestBooleanScorer extends L
final int[] count = new int[1];
s.search(q, new Collector() {
- private Scorer scorer;
@Override
public void setScorer(Scorer scorer) {
// Make sure we got BooleanScorer:
- this.scorer = scorer;
- assertEquals("Scorer is implemented by wrong class", BooleanScorer.class.getName() + "$BucketScorer", scorer.getClass().getName());
+ final Class<?> clazz = scorer instanceof AssertingScorer ? ((AssertingScorer) scorer).getIn().getClass() : scorer.getClass();
+ assertEquals("Scorer is implemented by wrong class", BooleanScorer.class.getName() + "$BucketScorer", clazz.getName());
}
@Override
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java Tue May 7 11:20:55 2013
@@ -80,7 +80,7 @@ public class TestCachingWrapperFilter ex
CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
// the caching filter should return the empty set constant
- assertSame(DocIdSet.EMPTY_DOCIDSET, cacher.getDocIdSet(context, context.reader().getLiveDocs()));
+ assertNull(cacher.getDocIdSet(context, context.reader().getLiveDocs()));
reader.close();
dir.close();
@@ -108,7 +108,7 @@ public class TestCachingWrapperFilter ex
CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
// the caching filter should return the empty set constant
- assertSame(DocIdSet.EMPTY_DOCIDSET, cacher.getDocIdSet(context, context.reader().getLiveDocs()));
+ assertNull(cacher.getDocIdSet(context, context.reader().getLiveDocs()));
reader.close();
dir.close();
@@ -120,13 +120,20 @@ public class TestCachingWrapperFilter ex
final CachingWrapperFilter cacher = new CachingWrapperFilter(filter);
final DocIdSet originalSet = filter.getDocIdSet(context, context.reader().getLiveDocs());
final DocIdSet cachedSet = cacher.getDocIdSet(context, context.reader().getLiveDocs());
- assertTrue(cachedSet.isCacheable());
- assertEquals(shouldCacheable, originalSet.isCacheable());
- //System.out.println("Original: "+originalSet.getClass().getName()+" -- cached: "+cachedSet.getClass().getName());
- if (originalSet.isCacheable()) {
- assertEquals("Cached DocIdSet must be of same class like uncached, if cacheable", originalSet.getClass(), cachedSet.getClass());
+ if (originalSet == null) {
+ assertNull(cachedSet);
+ }
+ if (cachedSet == null) {
+ assertTrue(originalSet == null || originalSet.iterator() == null);
} else {
- assertTrue("Cached DocIdSet must be an FixedBitSet if the original one was not cacheable", cachedSet instanceof FixedBitSet || cachedSet == DocIdSet.EMPTY_DOCIDSET);
+ assertTrue(cachedSet.isCacheable());
+ assertEquals(shouldCacheable, originalSet.isCacheable());
+ //System.out.println("Original: "+originalSet.getClass().getName()+" -- cached: "+cachedSet.getClass().getName());
+ if (originalSet.isCacheable()) {
+ assertEquals("Cached DocIdSet must be of same class like uncached, if cacheable", originalSet.getClass(), cachedSet.getClass());
+ } else {
+ assertTrue("Cached DocIdSet must be an FixedBitSet if the original one was not cacheable", cachedSet instanceof FixedBitSet || cachedSet == null);
+ }
}
}
@@ -192,6 +199,7 @@ public class TestCachingWrapperFilter ex
CachingWrapperFilter filter = new CachingWrapperFilter(startFilter);
docs = searcher.search(new MatchAllDocsQuery(), filter, 1);
+ assertTrue(filter.sizeInBytes() > 0);
assertEquals("[query + filter] Should find a hit...", 1, docs.totalHits);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConjunctions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConjunctions.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConjunctions.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConjunctions.java Tue May 7 11:20:55 2013
@@ -58,7 +58,7 @@ public class TestConjunctions extends Lu
writer.addDocument(doc("nutch", "nutch is an internet search engine with web crawler and is using lucene and hadoop"));
reader = writer.getReader();
writer.close();
- searcher = new IndexSearcher(reader);
+ searcher = newSearcher(reader);
searcher.setSimilarity(new TFSimilarity());
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java Tue May 7 11:20:55 2013
@@ -145,7 +145,7 @@ public class TestConstantScoreQuery exte
Filter filterB = new CachingWrapperFilter(new QueryWrapperFilter(new TermQuery(new Term("field", "b"))));
Query query = new ConstantScoreQuery(filterB);
- IndexSearcher s = new IndexSearcher(r);
+ IndexSearcher s = newSearcher(r);
assertEquals(1, s.search(query, filterB, 1).totalHits); // Query for field:b, Filter field:b
Filter filterA = new CachingWrapperFilter(new QueryWrapperFilter(new TermQuery(new Term("field", "a"))));
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Tue May 7 11:20:55 2013
@@ -19,12 +19,16 @@ package org.apache.lucene.search;
import org.apache.lucene.document.Field;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.AtomicReaderContext;
+import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.SlowCompositeReaderWrapper;
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.RandomIndexWriter;
@@ -32,6 +36,8 @@ import org.apache.lucene.index.StoredDoc
import org.apache.lucene.index.Term;
import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.search.similarities.Similarity;
+import org.apache.lucene.search.spans.SpanQuery;
+import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.store.Directory;
import java.text.DecimalFormat;
@@ -470,6 +476,39 @@ public class TestDisjunctionMaxQuery ext
}
}
+ // LUCENE-4477 / LUCENE-4401:
+ public void testBooleanSpanQuery() throws Exception {
+ int hits = 0;
+ Directory directory = newDirectory();
+ Analyzer indexerAnalyzer = new MockAnalyzer(random());
+
+ IndexWriterConfig config = new IndexWriterConfig(TEST_VERSION_CURRENT, indexerAnalyzer);
+ IndexWriter writer = new IndexWriter(directory, config);
+ String FIELD = "content";
+ Document d = new Document();
+ d.add(new TextField(FIELD, "clockwork orange", Field.Store.YES));
+ writer.addDocument(d);
+ writer.close();
+
+ IndexReader indexReader = DirectoryReader.open(directory);
+ IndexSearcher searcher = newSearcher(indexReader);
+
+ DisjunctionMaxQuery query = new DisjunctionMaxQuery(1.0f);
+ SpanQuery sq1 = new SpanTermQuery(new Term(FIELD, "clockwork"));
+ SpanQuery sq2 = new SpanTermQuery(new Term(FIELD, "clckwork"));
+ query.add(sq1);
+ query.add(sq2);
+ TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
+ searcher.search(query, collector);
+ hits = collector.topDocs().scoreDocs.length;
+ for (ScoreDoc scoreDoc : collector.topDocs().scoreDocs){
+ System.out.println(scoreDoc.doc);
+ }
+ indexReader.close();
+ assertEquals(hits, 1);
+ directory.close();
+ }
+
/** macro */
protected Query tq(String f, String t) {
return new TermQuery(new Term(f, t));
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java Tue May 7 11:20:55 2013
@@ -17,6 +17,7 @@ package org.apache.lucene.search;
* limitations under the License.
*/
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
@@ -55,9 +56,8 @@ public class TestDocIdSet extends Lucene
}
@Override
- public int advance(int target) {
- while (nextDoc() < target) {}
- return docid;
+ public int advance(int target) throws IOException {
+ return slowAdvance(target);
}
@Override
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java Tue May 7 11:20:55 2013
@@ -47,7 +47,7 @@ public class TestFieldValueFilter extend
}
IndexReader reader = DirectoryReader.open(directory);
- IndexSearcher searcher = new IndexSearcher(reader);
+ IndexSearcher searcher = newSearcher(reader);
TopDocs search = searcher.search(new TermQuery(new Term("all", "test")),
new FieldValueFilter("some", true), docs);
assertEquals(search.totalHits, numDocsNoValue);
@@ -74,7 +74,7 @@ public class TestFieldValueFilter extend
}
}
IndexReader reader = DirectoryReader.open(directory);
- IndexSearcher searcher = new IndexSearcher(reader);
+ IndexSearcher searcher = newSearcher(reader);
TopDocs search = searcher.search(new TermQuery(new Term("all", "test")),
new FieldValueFilter("some"), docs);
assertEquals(search.totalHits, numDocsWithValue);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java Tue May 7 11:20:55 2013
@@ -51,8 +51,6 @@ public class TestFilteredSearch extends
searchFiltered(writer, directory, filter, enforceSingleSegment);
// run the test on more than one segment
enforceSingleSegment = false;
- // reset - it is stateful
- filter.reset();
writer.close();
writer = new IndexWriter(directory, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())).setOpenMode(OpenMode.CREATE).setMaxBufferedDocs(10).setMergePolicy(newLogMergePolicy()));
// we index 60 docs - this will create 6 segments
@@ -61,37 +59,30 @@ public class TestFilteredSearch extends
directory.close();
}
- public void searchFiltered(IndexWriter writer, Directory directory, Filter filter, boolean fullMerge) {
- try {
- for (int i = 0; i < 60; i++) {//Simple docs
- Document doc = new Document();
- doc.add(newStringField(FIELD, Integer.toString(i), Field.Store.YES));
- writer.addDocument(doc);
- }
- if (fullMerge) {
- writer.forceMerge(1);
- }
- writer.close();
+ public void searchFiltered(IndexWriter writer, Directory directory, Filter filter, boolean fullMerge) throws IOException {
+ for (int i = 0; i < 60; i++) {//Simple docs
+ Document doc = new Document();
+ doc.add(newStringField(FIELD, Integer.toString(i), Field.Store.YES));
+ writer.addDocument(doc);
+ }
+ if (fullMerge) {
+ writer.forceMerge(1);
+ }
+ writer.close();
- BooleanQuery booleanQuery = new BooleanQuery();
- booleanQuery.add(new TermQuery(new Term(FIELD, "36")), BooleanClause.Occur.SHOULD);
+ BooleanQuery booleanQuery = new BooleanQuery();
+ booleanQuery.add(new TermQuery(new Term(FIELD, "36")), BooleanClause.Occur.SHOULD);
- IndexReader reader = DirectoryReader.open(directory);
- IndexSearcher indexSearcher = new IndexSearcher(reader);
- ScoreDoc[] hits = indexSearcher.search(booleanQuery, filter, 1000).scoreDocs;
- assertEquals("Number of matched documents", 1, hits.length);
- reader.close();
- }
- catch (IOException e) {
- fail(e.getMessage());
- }
-
+ IndexReader reader = DirectoryReader.open(directory);
+ IndexSearcher indexSearcher = newSearcher(reader);
+ ScoreDoc[] hits = indexSearcher.search(booleanQuery, filter, 1000).scoreDocs;
+ assertEquals("Number of matched documents", 1, hits.length);
+ reader.close();
}
public static final class SimpleDocIdSetFilter extends Filter {
private final int[] docs;
- private int index;
public SimpleDocIdSetFilter(int[] docs) {
this.docs = docs;
@@ -103,20 +94,14 @@ public class TestFilteredSearch extends
final FixedBitSet set = new FixedBitSet(context.reader().maxDoc());
int docBase = context.docBase;
final int limit = docBase+context.reader().maxDoc();
- for (;index < docs.length; index++) {
+ for (int index=0;index < docs.length; index++) {
final int docId = docs[index];
- if(docId > limit)
- break;
- if (docId >= docBase) {
+ if (docId >= docBase && docId < limit) {
set.set(docId-docBase);
}
}
return set.cardinality() == 0 ? null:set;
}
-
- public void reset(){
- index = 0;
- }
}
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestLiveFieldValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestLiveFieldValues.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestLiveFieldValues.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestLiveFieldValues.java Tue May 7 11:20:55 2013
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -36,10 +35,8 @@ import org.apache.lucene.document.String
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.StoredDocument;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.NRTManager.TrackingIndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
@@ -50,10 +47,9 @@ public class TestLiveFieldValues extends
Directory dir = newFSDirectory(_TestUtil.getTempDir("livefieldupdates"));
IndexWriterConfig iwc = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
- final IndexWriter _w = new IndexWriter(dir, iwc);
- final TrackingIndexWriter w = new TrackingIndexWriter(_w);
+ final IndexWriter w = new IndexWriter(dir, iwc);
- final NRTManager mgr = new NRTManager(w, new SearcherFactory() {
+ final SearcherManager mgr = new SearcherManager(w, true, new SearcherFactory() {
@Override
public IndexSearcher newSearcher(IndexReader r) {
return new IndexSearcher(r);
@@ -174,7 +170,7 @@ public class TestLiveFieldValues extends
rt.close();
mgr.close();
- _w.close();
+ w.close();
dir.close();
}
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java Tue May 7 11:20:55 2013
@@ -376,7 +376,7 @@ public class TestMultiPhraseQuery extend
writer.addDocument(doc);
IndexReader r = writer.getReader();
writer.close();
- IndexSearcher s = new IndexSearcher(r);
+ IndexSearcher s = newSearcher(r);
MultiPhraseQuery mpq = new MultiPhraseQuery();
//mpq.setSlop(1);
@@ -474,7 +474,7 @@ public class TestMultiPhraseQuery extend
writer.addDocument(doc);
IndexReader r = DirectoryReader.open(writer,false);
writer.close();
- IndexSearcher s = new IndexSearcher(r);
+ IndexSearcher s = newSearcher(r);
if (VERBOSE) {
System.out.println("QUERY=" + q);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNGramPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNGramPhraseQuery.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNGramPhraseQuery.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNGramPhraseQuery.java Tue May 7 11:20:55 2013
@@ -88,6 +88,17 @@ public class TestNGramPhraseQuery extend
pq3 = (PhraseQuery)q;
assertArrayEquals(new Term[]{new Term("f", "ABC"), new Term("f", "DEF"), new Term("f", "FGH")}, pq3.getTerms());
assertArrayEquals(new int[]{0, 3, 5}, pq3.getPositions());
+
+ // LUCENE-4970: boosting test
+ PhraseQuery pq4 = new NGramPhraseQuery(2);
+ pq4.add(new Term("f", "AB"));
+ pq4.add(new Term("f", "BC"));
+ pq4.add(new Term("f", "CD"));
+ pq4.setBoost(100.0F);
+
+ q = pq4.rewrite(reader);
+ assertNotSame(pq4, q);
+ assertEquals(pq4.getBoost(), q.getBoost(), 0.1f);
}
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java Tue May 7 11:20:55 2013
@@ -200,13 +200,11 @@ public class TestNumericRangeQuery32 ext
public void testInverseRange() throws Exception {
AtomicReaderContext context = SlowCompositeReaderWrapper.wrap(reader).getContext();
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(context, context.reader().getLiveDocs()));
+ assertNull("A inverse range should return the null instance", f.getDocIdSet(context, context.reader().getLiveDocs()));
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(context, context.reader().getLiveDocs()));
+ assertNull("A exclusive range starting with Integer.MAX_VALUE should return the null instance", f.getDocIdSet(context, context.reader().getLiveDocs()));
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(context, context.reader().getLiveDocs()));
+ assertNull("A exclusive range ending with Integer.MIN_VALUE should return the null instance", f.getDocIdSet(context, context.reader().getLiveDocs()));
}
@Test
@@ -327,7 +325,7 @@ public class TestNumericRangeQuery32 ext
writer.close();
IndexReader r = DirectoryReader.open(dir);
- IndexSearcher s = new IndexSearcher(r);
+ IndexSearcher s = newSearcher(r);
Query q=NumericRangeQuery.newIntRange("int", null, null, true, true);
TopDocs topDocs = s.search(q, 10);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java Tue May 7 11:20:55 2013
@@ -214,14 +214,14 @@ public class TestNumericRangeQuery64 ext
public void testInverseRange() throws Exception {
AtomicReaderContext context = SlowCompositeReaderWrapper.wrap(searcher.getIndexReader()).getContext();
NumericRangeFilter<Long> f = NumericRangeFilter.newLongRange("field8", 8, 1000L, -1000L, true, true);
- assertSame("A inverse range should return the EMPTY_DOCIDSET instance", DocIdSet.EMPTY_DOCIDSET,
+ assertNull("A inverse range should return the null instance",
f.getDocIdSet(context, context.reader().getLiveDocs()));
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(context, context.reader().getLiveDocs()));
+ assertNull("A exclusive range starting with Long.MAX_VALUE should return the null instance",
+ f.getDocIdSet(context, context.reader().getLiveDocs()));
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(context, context.reader().getLiveDocs()));
+ assertNull("A exclusive range ending with Long.MIN_VALUE should return the null instance",
+ f.getDocIdSet(context, context.reader().getLiveDocs()));
}
@Test
@@ -352,7 +352,7 @@ public class TestNumericRangeQuery64 ext
writer.close();
IndexReader r = DirectoryReader.open(dir);
- IndexSearcher s = new IndexSearcher(r);
+ IndexSearcher s = newSearcher(r);
Query q=NumericRangeQuery.newLongRange("long", null, null, true, true);
TopDocs topDocs = s.search(q, 10);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java Tue May 7 11:20:55 2013
@@ -222,7 +222,7 @@ public class TestPhraseQuery extends Luc
public void testPhraseQueryWithStopAnalyzer() throws Exception {
Directory directory = newDirectory();
- Analyzer stopAnalyzer = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET, false);
+ Analyzer stopAnalyzer = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET);
RandomIndexWriter writer = new RandomIndexWriter(random(), directory,
newIndexWriterConfig( Version.LUCENE_40, stopAnalyzer));
Document doc = new Document();
@@ -241,16 +241,6 @@ public class TestPhraseQuery extends Luc
assertEquals(1, hits.length);
QueryUtils.check(random(), query,searcher);
-
- // StopAnalyzer as of 2.4 does not leave "holes", so this matches.
- query = new PhraseQuery();
- query.add(new Term("field", "words"));
- query.add(new Term("field", "here"));
- hits = searcher.search(query, null, 1000).scoreDocs;
- assertEquals(1, hits.length);
- QueryUtils.check(random(), query,searcher);
-
-
reader.close();
directory.close();
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java Tue May 7 11:20:55 2013
@@ -113,7 +113,7 @@ public class TestQueryWrapperFilter exte
final IndexReader r = w.getReader();
w.close();
- final TopDocs hits = new IndexSearcher(r).search(new MatchAllDocsQuery(),
+ final TopDocs hits = newSearcher(r).search(new MatchAllDocsQuery(),
new QueryWrapperFilter(new TermQuery(new Term("field", "a"))),
numDocs);
assertEquals(aDocs.size(), hits.totalHits);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java Tue May 7 11:20:55 2013
@@ -57,7 +57,7 @@ public class TestSameScoresWithThreads e
//System.out.println("numDocs=" + r.numDocs());
w.close();
- final IndexSearcher s = new IndexSearcher(r);
+ final IndexSearcher s = newSearcher(r);
Terms terms = MultiFields.getFields(r).terms("body");
int termCount = 0;
TermsEnum termsEnum = terms.iterator(null);
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java Tue May 7 11:20:55 2013
@@ -53,7 +53,7 @@ public class TestScorerPerf extends Luce
iw.addDocument(new Document());
iw.close();
r = DirectoryReader.open(d);
- s = new IndexSearcher(r);
+ s = newSearcher(r);
}
public void createRandomTerms(int nDocs, int nTerms, double power, Directory dir) throws Exception {
@@ -366,7 +366,7 @@ public class TestScorerPerf extends Luce
RAMDirectory dir = new RAMDirectory();
if (VERBOSE) System.out.println("Creating index");
createRandomTerms(100000,25,.5, dir);
- s = new IndexSearcher(dir, true);
+ s = newSearcher(dir, true);
if (VERBOSE) System.out.println("Starting performance test");
for (int i=0; i<bigIter; i++) {
long start = System.currentTimeMillis();
@@ -383,7 +383,7 @@ public class TestScorerPerf extends Luce
RAMDirectory dir = new RAMDirectory();
if (VERBOSE) System.out.println("Creating index");
createRandomTerms(100000,25,.2, dir);
- s = new IndexSearcher(dir, true);
+ s = newSearcher(dir, true);
if (VERBOSE) System.out.println("Starting performance test");
for (int i=0; i<bigIter; i++) {
long start = System.currentTimeMillis();
@@ -401,7 +401,7 @@ public class TestScorerPerf extends Luce
RAMDirectory dir = new RAMDirectory();
if (VERBOSE) System.out.println("Creating index");
createRandomTerms(100000,25,2,dir);
- s = new IndexSearcher(dir, true);
+ s = newSearcher(dir, true);
if (VERBOSE) System.out.println("Starting performance test");
for (int i=0; i<bigIter; i++) {
long start = System.currentTimeMillis();
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java Tue May 7 11:20:55 2013
@@ -39,6 +39,7 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.index.ThreadedIndexingAndSearchingTestCase;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.lucene.util.NamedThreadFactory;
import org.apache.lucene.util._TestUtil;
@@ -361,7 +362,7 @@ public class TestSearcherManager extends
final SearcherFactory theEvilOne = new SearcherFactory() {
@Override
public IndexSearcher newSearcher(IndexReader ignored) {
- return new IndexSearcher(other);
+ return LuceneTestCase.newSearcher(other);
}
};
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSort.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSort.java Tue May 7 11:20:55 2013
@@ -35,6 +35,7 @@ import org.apache.lucene.index.RandomInd
import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
+import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
@@ -69,7 +70,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -97,7 +98,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -124,7 +125,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -150,7 +151,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -178,7 +179,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -205,7 +206,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -231,7 +232,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(SortField.FIELD_DOC);
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -257,7 +258,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField(null, SortField.Type.DOC, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -283,7 +284,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort();
TopDocs actual = searcher.search(new TermQuery(new Term("value", "foo")), 10, sort);
@@ -313,7 +314,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField(null, SortField.Type.SCORE, true));
TopDocs actual = searcher.search(new TermQuery(new Term("value", "foo")), 10, sort);
@@ -345,7 +346,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.BYTE));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -374,7 +375,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.BYTE));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -403,7 +404,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
SortField sortField = new SortField("value", SortField.Type.BYTE);
sortField.setMissingValue(Byte.MAX_VALUE);
Sort sort = new Sort(sortField);
@@ -435,7 +436,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.BYTE, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -465,7 +466,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.SHORT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -494,7 +495,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.SHORT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -523,7 +524,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
SortField sortField = new SortField("value", SortField.Type.SHORT);
sortField.setMissingValue(Short.MAX_VALUE);
Sort sort = new Sort(sortField);
@@ -555,7 +556,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.SHORT, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -585,7 +586,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.INT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -614,7 +615,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.INT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -643,7 +644,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
SortField sortField = new SortField("value", SortField.Type.INT);
sortField.setMissingValue(Integer.MAX_VALUE);
Sort sort = new Sort(sortField);
@@ -675,7 +676,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.INT, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -705,7 +706,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.LONG));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -734,7 +735,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.LONG));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -763,7 +764,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
SortField sortField = new SortField("value", SortField.Type.LONG);
sortField.setMissingValue(Long.MAX_VALUE);
Sort sort = new Sort(sortField);
@@ -795,7 +796,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.LONG, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -825,7 +826,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -854,7 +855,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -883,7 +884,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
SortField sortField = new SortField("value", SortField.Type.FLOAT);
sortField.setMissingValue(Float.MAX_VALUE);
Sort sort = new Sort(sortField);
@@ -915,7 +916,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -948,7 +949,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -963,6 +964,33 @@ public class TestSort extends LuceneTest
dir.close();
}
+ /** Tests sorting on type double with +/- zero */
+ public void testDoubleSignedZero() throws IOException {
+ Directory dir = newDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
+ Document doc = new Document();
+ doc.add(newStringField("value", "+0", Field.Store.YES));
+ writer.addDocument(doc);
+ doc = new Document();
+ doc.add(newStringField("value", "-0", Field.Store.YES));
+ writer.addDocument(doc);
+ doc = new Document();
+ IndexReader ir = writer.getReader();
+ writer.close();
+
+ IndexSearcher searcher = newSearcher(ir);
+ Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
+
+ TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
+ assertEquals(2, td.totalHits);
+ // numeric order
+ assertEquals("-0", searcher.doc(td.scoreDocs[0].doc).get("value"));
+ assertEquals("+0", searcher.doc(td.scoreDocs[1].doc).get("value"));
+
+ ir.close();
+ dir.close();
+ }
+
/** Tests sorting on type double with a missing value */
public void testDoubleMissing() throws IOException {
Directory dir = newDirectory();
@@ -981,7 +1009,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -1014,7 +1042,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
SortField sortField = new SortField("value", SortField.Type.DOUBLE);
sortField.setMissingValue(Double.MAX_VALUE);
Sort sort = new Sort(sortField);
@@ -1050,7 +1078,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -1108,7 +1136,7 @@ public class TestSort extends LuceneTest
SortField.FIELD_DOC);
// this should not throw AIOOBE or RuntimeEx
IndexReader reader = DirectoryReader.open(indexStore);
- IndexSearcher searcher = new IndexSearcher(reader);
+ IndexSearcher searcher = newSearcher(reader);
searcher.search(new MatchAllDocsQuery(), null, 500, sort);
reader.close();
indexStore.close();
@@ -1150,7 +1178,7 @@ public class TestSort extends LuceneTest
/** test sorts when there's nothing in the index */
public void testEmptyIndex() throws Exception {
- IndexSearcher empty = new IndexSearcher(new MultiReader());
+ IndexSearcher empty = newSearcher(new MultiReader());
Query query = new TermQuery(new Term("contents", "foo"));
Sort sort = new Sort();
@@ -1452,7 +1480,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -1473,7 +1501,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING));
TopDocs expected = searcher.search(new TermQuery(new Term("value", "foo")), 10);
@@ -1502,7 +1530,7 @@ public class TestSort extends LuceneTest
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
// tievalue, then value
Sort sort = new Sort(new SortField("tievalue", SortField.Type.STRING),
new SortField("value", SortField.Type.STRING));
@@ -1516,4 +1544,31 @@ public class TestSort extends LuceneTest
ir.close();
dir.close();
}
+
+ public void testScore() throws IOException {
+ Directory dir = newDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
+ Document doc = new Document();
+ doc.add(newStringField("value", "bar", Field.Store.NO));
+ writer.addDocument(doc);
+ doc = new Document();
+ doc.add(newStringField("value", "foo", Field.Store.NO));
+ writer.addDocument(doc);
+ IndexReader ir = writer.getReader();
+ writer.close();
+
+ IndexSearcher searcher = newSearcher(ir);
+ Sort sort = new Sort(SortField.FIELD_SCORE);
+
+ final BooleanQuery bq = new BooleanQuery();
+ bq.add(new TermQuery(new Term("value", "foo")), Occur.SHOULD);
+ bq.add(new MatchAllDocsQuery(), Occur.SHOULD);
+ TopDocs td = searcher.search(bq, 10, sort);
+ assertEquals(2, td.totalHits);
+ assertEquals(1, td.scoreDocs[0].doc);
+ assertEquals(0, td.scoreDocs[1].doc);
+
+ ir.close();
+ dir.close();
+ }
}
Modified: lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java?rev=1479862&r1=1479861&r2=1479862&view=diff
==============================================================================
--- lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java (original)
+++ lucene/dev/branches/lucene4258/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java Tue May 7 11:20:55 2013
@@ -64,7 +64,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -93,7 +93,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -122,7 +122,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -151,7 +151,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -180,7 +180,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -209,7 +209,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -242,7 +242,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.BYTE));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -276,7 +276,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.BYTE, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -310,7 +310,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.SHORT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -344,7 +344,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.SHORT, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -378,7 +378,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.INT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -412,7 +412,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.INT, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -446,7 +446,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.LONG));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -480,7 +480,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.LONG, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -514,7 +514,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -548,7 +548,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -586,7 +586,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -602,6 +602,35 @@ public class TestSortDocValues extends L
dir.close();
}
+ /** Tests sorting on type double with +/- zero */
+ public void testDoubleSignedZero() throws IOException {
+ Directory dir = newDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
+ Document doc = new Document();
+ doc.add(new DoubleDocValuesField("value", +0D));
+ doc.add(newStringField("value", "+0", Field.Store.YES));
+ writer.addDocument(doc);
+ doc = new Document();
+ doc.add(new DoubleDocValuesField("value", -0D));
+ doc.add(newStringField("value", "-0", Field.Store.YES));
+ writer.addDocument(doc);
+ doc = new Document();
+ IndexReader ir = writer.getReader();
+ writer.close();
+
+ IndexSearcher searcher = newSearcher(ir);
+ Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
+
+ TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
+ assertEquals(2, td.totalHits);
+ // numeric order
+ assertEquals("-0", searcher.doc(td.scoreDocs[0].doc).get("value"));
+ assertEquals("+0", searcher.doc(td.scoreDocs[1].doc).get("value"));
+
+ ir.close();
+ dir.close();
+ }
+
/** Tests sorting on type double in reverse */
public void testDoubleReverse() throws IOException {
Directory dir = newDirectory();
@@ -625,7 +654,7 @@ public class TestSortDocValues extends L
IndexReader ir = writer.getReader();
writer.close();
- IndexSearcher searcher = new IndexSearcher(ir);
+ IndexSearcher searcher = newSearcher(ir);
Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE, true));
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);