You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2010/07/13 18:12:24 UTC
svn commit: r963780 [3/6] - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/backwards/src/ lucene/backwards/src/test/org/apache/lucene/analysis/
lucene/backwards/src/test/org/apache/lucene/document/
lucene/backwards/src/test/org/apache/lucene/inde...
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDateSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDateSort.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDateSort.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDateSort.java Tue Jul 13 16:12:21 2010
@@ -25,8 +25,9 @@ import org.apache.lucene.analysis.Whites
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
@@ -44,14 +45,16 @@ public class TestDateSort extends Lucene
private static final String TEXT_FIELD = "text";
private static final String DATE_TIME_FIELD = "dateTime";
- private static Directory directory;
+ private Directory directory;
+ private IndexReader reader;
@Override
protected void setUp() throws Exception {
super.setUp();
// Create an index writer.
directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
// oldest doc:
// Add the first document. text = "Document 1" dateTime = Oct 10 03:25:22 EDT 2007
@@ -66,12 +69,19 @@ public class TestDateSort extends Lucene
// Add the fifth document. text = "Document 5" dateTime = Oct 12 13:25:43 EDT 2007
writer.addDocument(createDocument("Document 5", 1192209943000L));
- writer.optimize();
+ reader = writer.getReader();
writer.close();
}
+ @Override
+ protected void tearDown() throws Exception {
+ reader.close();
+ directory.close();
+ super.tearDown();
+ }
+
public void testReverseDateSort() throws Exception {
- IndexSearcher searcher = new IndexSearcher(directory, true);
+ IndexSearcher searcher = new IndexSearcher(reader);
Sort sort = new Sort(new SortField(DATE_TIME_FIELD, SortField.STRING, true));
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Tue Jul 13 16:12:21 2010
@@ -1,6 +1,5 @@
package org.apache.lucene.search;
-
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -23,8 +22,8 @@ import org.apache.lucene.analysis.Whites
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
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.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
@@ -34,456 +33,459 @@ import java.io.IOException;
/**
* Test of the DisjunctionMaxQuery.
- *
+ *
*/
-public class TestDisjunctionMaxQuery extends LuceneTestCase{
-
- /** threshold for comparing floats */
- public static final float SCORE_COMP_THRESH = 0.0000f;
-
- /**
- * Similarity to eliminate tf, idf and lengthNorm effects to
- * isolate test case.
- *
- * <p>
- * same as TestRankingSimilarity in TestRanking.zip from
- * http://issues.apache.org/jira/browse/LUCENE-323
- * </p>
- */
- private static class TestSimilarity extends DefaultSimilarity {
-
- public TestSimilarity() {
- }
- @Override
- public float tf(float freq) {
- if (freq > 0.0f) return 1.0f;
- else return 0.0f;
- }
- @Override
- public float lengthNorm(String fieldName, int numTerms) {
- return 1.0f;
- }
- @Override
- public float idf(int docFreq, int numDocs) {
- return 1.0f;
- }
+public class TestDisjunctionMaxQuery extends LuceneTestCase {
+
+ /** threshold for comparing floats */
+ public static final float SCORE_COMP_THRESH = 0.0000f;
+
+ /**
+ * Similarity to eliminate tf, idf and lengthNorm effects to isolate test
+ * case.
+ *
+ * <p>
+ * same as TestRankingSimilarity in TestRanking.zip from
+ * http://issues.apache.org/jira/browse/LUCENE-323
+ * </p>
+ */
+ private static class TestSimilarity extends DefaultSimilarity {
+
+ public TestSimilarity() {}
+
+ @Override
+ public float tf(float freq) {
+ if (freq > 0.0f) return 1.0f;
+ else return 0.0f;
}
-
- public Similarity sim = new TestSimilarity();
- public Directory index;
- public IndexReader r;
- public IndexSearcher s;
-
+
@Override
- protected void setUp() throws Exception {
- super.setUp();
-
- index = new RAMDirectory();
- IndexWriter writer = new IndexWriter(index, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)).setSimilarity(sim));
-
- // hed is the most important field, dek is secondary
-
- // d1 is an "ok" match for: albino elephant
- {
- Document d1 = new Document();
- d1.add(new Field("id", "d1", Field.Store.YES, Field.Index.NOT_ANALYZED));//Field.Keyword("id", "d1"));
- d1.add(new Field("hed", "elephant", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("hed", "elephant"));
- d1.add(new Field("dek", "elephant", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("dek", "elephant"));
- writer.addDocument(d1);
- }
-
- // d2 is a "good" match for: albino elephant
- {
- Document d2 = new Document();
- d2.add(new Field("id", "d2", Field.Store.YES, Field.Index.NOT_ANALYZED));//Field.Keyword("id", "d2"));
- d2.add(new Field("hed", "elephant", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("hed", "elephant"));
- d2.add(new Field("dek", "albino", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("dek", "albino"));
- d2.add(new Field("dek", "elephant", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("dek", "elephant"));
- writer.addDocument(d2);
- }
-
- // d3 is a "better" match for: albino elephant
- {
- Document d3 = new Document();
- d3.add(new Field("id", "d3", Field.Store.YES, Field.Index.NOT_ANALYZED));//Field.Keyword("id", "d3"));
- d3.add(new Field("hed", "albino", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("hed", "albino"));
- d3.add(new Field("hed", "elephant", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("hed", "elephant"));
- writer.addDocument(d3);
- }
-
- // d4 is the "best" match for: albino elephant
- {
- Document d4 = new Document();
- d4.add(new Field("id", "d4", Field.Store.YES, Field.Index.NOT_ANALYZED));//Field.Keyword("id", "d4"));
- d4.add(new Field("hed", "albino", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("hed", "albino"));
- d4.add(new Field("hed", "elephant", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("hed", "elephant"));
- d4.add(new Field("dek", "albino", Field.Store.YES, Field.Index.ANALYZED));//Field.Text("dek", "albino"));
- writer.addDocument(d4);
- }
-
- writer.close();
-
- r = IndexReader.open(index, true);
- s = new IndexSearcher(r);
- s.setSimilarity(sim);
+ public float lengthNorm(String fieldName, int numTerms) {
+ return 1.0f;
}
-
+
+ @Override
+ public float idf(int docFreq, int numDocs) {
+ return 1.0f;
+ }
+ }
+
+ public Similarity sim = new TestSimilarity();
+ public Directory index;
+ public IndexReader r;
+ public IndexSearcher s;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ index = new RAMDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), index,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer())
+ .setSimilarity(sim));
+
+ // hed is the most important field, dek is secondary
+
+ // d1 is an "ok" match for: albino elephant
+ {
+ Document d1 = new Document();
+ d1.add(new Field("id", "d1", Field.Store.YES, Field.Index.NOT_ANALYZED));// Field.Keyword("id",
+ // "d1"));
+ d1
+ .add(new Field("hed", "elephant", Field.Store.YES,
+ Field.Index.ANALYZED));// Field.Text("hed", "elephant"));
+ d1
+ .add(new Field("dek", "elephant", Field.Store.YES,
+ Field.Index.ANALYZED));// Field.Text("dek", "elephant"));
+ writer.addDocument(d1);
+ }
+
+ // d2 is a "good" match for: albino elephant
+ {
+ Document d2 = new Document();
+ d2.add(new Field("id", "d2", Field.Store.YES, Field.Index.NOT_ANALYZED));// Field.Keyword("id",
+ // "d2"));
+ d2
+ .add(new Field("hed", "elephant", Field.Store.YES,
+ Field.Index.ANALYZED));// Field.Text("hed", "elephant"));
+ d2.add(new Field("dek", "albino", Field.Store.YES, Field.Index.ANALYZED));// Field.Text("dek",
+ // "albino"));
+ d2
+ .add(new Field("dek", "elephant", Field.Store.YES,
+ Field.Index.ANALYZED));// Field.Text("dek", "elephant"));
+ writer.addDocument(d2);
+ }
+
+ // d3 is a "better" match for: albino elephant
+ {
+ Document d3 = new Document();
+ d3.add(new Field("id", "d3", Field.Store.YES, Field.Index.NOT_ANALYZED));// Field.Keyword("id",
+ // "d3"));
+ d3.add(new Field("hed", "albino", Field.Store.YES, Field.Index.ANALYZED));// Field.Text("hed",
+ // "albino"));
+ d3
+ .add(new Field("hed", "elephant", Field.Store.YES,
+ Field.Index.ANALYZED));// Field.Text("hed", "elephant"));
+ writer.addDocument(d3);
+ }
+
+ // d4 is the "best" match for: albino elephant
+ {
+ Document d4 = new Document();
+ d4.add(new Field("id", "d4", Field.Store.YES, Field.Index.NOT_ANALYZED));// Field.Keyword("id",
+ // "d4"));
+ d4.add(new Field("hed", "albino", Field.Store.YES, Field.Index.ANALYZED));// Field.Text("hed",
+ // "albino"));
+ d4
+ .add(new Field("hed", "elephant", Field.Store.YES,
+ Field.Index.ANALYZED));// Field.Text("hed", "elephant"));
+ d4.add(new Field("dek", "albino", Field.Store.YES, Field.Index.ANALYZED));// Field.Text("dek",
+ // "albino"));
+ writer.addDocument(d4);
+ }
+
+ r = writer.getReader();
+ writer.close();
+ s = new IndexSearcher(r);
+ s.setSimilarity(sim);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ s.close();
+ r.close();
+ index.close();
+ super.tearDown();
+ }
+
public void testSkipToFirsttimeMiss() throws IOException {
final DisjunctionMaxQuery dq = new DisjunctionMaxQuery(0.0f);
- dq.add(tq("id","d1"));
- dq.add(tq("dek","DOES_NOT_EXIST"));
-
- QueryUtils.check(dq,s);
-
+ dq.add(tq("id", "d1"));
+ dq.add(tq("dek", "DOES_NOT_EXIST"));
+
+ QueryUtils.check(dq, s);
+
final Weight dw = dq.weight(s);
final Scorer ds = dw.scorer(r, true, false);
final boolean skipOk = ds.advance(3) != DocIdSetIterator.NO_MORE_DOCS;
if (skipOk) {
- fail("firsttime skipTo found a match? ... " + r.document(ds.docID()).get("id"));
+ fail("firsttime skipTo found a match? ... "
+ + r.document(ds.docID()).get("id"));
}
}
-
+
public void testSkipToFirsttimeHit() throws IOException {
final DisjunctionMaxQuery dq = new DisjunctionMaxQuery(0.0f);
- dq.add(tq("dek","albino"));
- dq.add(tq("dek","DOES_NOT_EXIST"));
-
- QueryUtils.check(dq,s);
-
+ dq.add(tq("dek", "albino"));
+ dq.add(tq("dek", "DOES_NOT_EXIST"));
+
+ QueryUtils.check(dq, s);
+
final Weight dw = dq.weight(s);
final Scorer ds = dw.scorer(r, true, false);
- assertTrue("firsttime skipTo found no match", ds.advance(3) != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue("firsttime skipTo found no match",
+ ds.advance(3) != DocIdSetIterator.NO_MORE_DOCS);
assertEquals("found wrong docid", "d4", r.document(ds.docID()).get("id"));
}
-
+
public void testSimpleEqualScores1() throws Exception {
-
+
DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
- q.add(tq("hed","albino"));
- q.add(tq("hed","elephant"));
- QueryUtils.check(q,s);
-
+ q.add(tq("hed", "albino"));
+ q.add(tq("hed", "elephant"));
+ QueryUtils.check(q, s);
+
ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
+
try {
- assertEquals("all docs should match " + q.toString(),
- 4, h.length);
-
+ assertEquals("all docs should match " + q.toString(), 4, h.length);
+
float score = h[0].score;
for (int i = 1; i < h.length; i++) {
- assertEquals("score #" + i + " is not the same",
- score, h[i].score, SCORE_COMP_THRESH);
+ assertEquals("score #" + i + " is not the same", score, h[i].score,
+ SCORE_COMP_THRESH);
}
} catch (Error e) {
- printHits("testSimpleEqualScores1",h,s);
+ printHits("testSimpleEqualScores1", h, s);
throw e;
}
-
+
}
-
- public void testSimpleEqualScores2() throws Exception {
-
- DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
- q.add(tq("dek","albino"));
- q.add(tq("dek","elephant"));
- QueryUtils.check(q,s);
-
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
- assertEquals("3 docs should match " + q.toString(),
- 3, h.length);
- float score = h[0].score;
- for (int i = 1; i < h.length; i++) {
- assertEquals("score #" + i + " is not the same",
- score, h[i].score, SCORE_COMP_THRESH);
- }
- } catch (Error e) {
- printHits("testSimpleEqualScores2",h, s);
- throw e;
- }
-
+
+ public void testSimpleEqualScores2() throws Exception {
+
+ DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
+ q.add(tq("dek", "albino"));
+ q.add(tq("dek", "elephant"));
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+ assertEquals("3 docs should match " + q.toString(), 3, h.length);
+ float score = h[0].score;
+ for (int i = 1; i < h.length; i++) {
+ assertEquals("score #" + i + " is not the same", score, h[i].score,
+ SCORE_COMP_THRESH);
+ }
+ } catch (Error e) {
+ printHits("testSimpleEqualScores2", h, s);
+ throw e;
}
-
- public void testSimpleEqualScores3() throws Exception {
-
- DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
- q.add(tq("hed","albino"));
- q.add(tq("hed","elephant"));
- q.add(tq("dek","albino"));
- q.add(tq("dek","elephant"));
- QueryUtils.check(q,s);
-
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
- assertEquals("all docs should match " + q.toString(),
- 4, h.length);
- float score = h[0].score;
- for (int i = 1; i < h.length; i++) {
- assertEquals("score #" + i + " is not the same",
- score, h[i].score, SCORE_COMP_THRESH);
- }
- } catch (Error e) {
- printHits("testSimpleEqualScores3",h, s);
- throw e;
- }
-
+
+ }
+
+ public void testSimpleEqualScores3() throws Exception {
+
+ DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.0f);
+ q.add(tq("hed", "albino"));
+ q.add(tq("hed", "elephant"));
+ q.add(tq("dek", "albino"));
+ q.add(tq("dek", "elephant"));
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+ assertEquals("all docs should match " + q.toString(), 4, h.length);
+ float score = h[0].score;
+ for (int i = 1; i < h.length; i++) {
+ assertEquals("score #" + i + " is not the same", score, h[i].score,
+ SCORE_COMP_THRESH);
+ }
+ } catch (Error e) {
+ printHits("testSimpleEqualScores3", h, s);
+ throw e;
}
-
- public void testSimpleTiebreaker() throws Exception {
-
- DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.01f);
- q.add(tq("dek","albino"));
- q.add(tq("dek","elephant"));
- QueryUtils.check(q,s);
-
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
- assertEquals("3 docs should match " + q.toString(),
- 3, h.length);
- assertEquals("wrong first", "d2", s.doc(h[0].doc).get("id"));
- float score0 = h[0].score;
- float score1 = h[1].score;
- float score2 = h[2].score;
- assertTrue("d2 does not have better score then others: " +
- score0 + " >? " + score1,
- score0 > score1);
- assertEquals("d4 and d1 don't have equal scores",
- score1, score2, SCORE_COMP_THRESH);
- } catch (Error e) {
- printHits("testSimpleTiebreaker",h, s);
- throw e;
- }
+
+ }
+
+ public void testSimpleTiebreaker() throws Exception {
+
+ DisjunctionMaxQuery q = new DisjunctionMaxQuery(0.01f);
+ q.add(tq("dek", "albino"));
+ q.add(tq("dek", "elephant"));
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+ assertEquals("3 docs should match " + q.toString(), 3, h.length);
+ assertEquals("wrong first", "d2", s.doc(h[0].doc).get("id"));
+ float score0 = h[0].score;
+ float score1 = h[1].score;
+ float score2 = h[2].score;
+ assertTrue("d2 does not have better score then others: " + score0
+ + " >? " + score1, score0 > score1);
+ assertEquals("d4 and d1 don't have equal scores", score1, score2,
+ SCORE_COMP_THRESH);
+ } catch (Error e) {
+ printHits("testSimpleTiebreaker", h, s);
+ throw e;
}
-
- public void testBooleanRequiredEqualScores() throws Exception {
-
- BooleanQuery q = new BooleanQuery();
- {
- DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.0f);
- q1.add(tq("hed","albino"));
- q1.add(tq("dek","albino"));
- q.add(q1,BooleanClause.Occur.MUST);//true,false);
- QueryUtils.check(q1,s);
-
- }
- {
- DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.0f);
- q2.add(tq("hed","elephant"));
- q2.add(tq("dek","elephant"));
- q.add(q2, BooleanClause.Occur.MUST);//true,false);
- QueryUtils.check(q2,s);
- }
-
- QueryUtils.check(q,s);
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
- assertEquals("3 docs should match " + q.toString(),
- 3, h.length);
- float score = h[0].score;
- for (int i = 1; i < h.length; i++) {
- assertEquals("score #" + i + " is not the same",
- score, h[i].score, SCORE_COMP_THRESH);
- }
- } catch (Error e) {
- printHits("testBooleanRequiredEqualScores1",h, s);
- throw e;
- }
+ }
+
+ public void testBooleanRequiredEqualScores() throws Exception {
+
+ BooleanQuery q = new BooleanQuery();
+ {
+ DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.0f);
+ q1.add(tq("hed", "albino"));
+ q1.add(tq("dek", "albino"));
+ q.add(q1, BooleanClause.Occur.MUST);// true,false);
+ QueryUtils.check(q1, s);
+
+ }
+ {
+ DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.0f);
+ q2.add(tq("hed", "elephant"));
+ q2.add(tq("dek", "elephant"));
+ q.add(q2, BooleanClause.Occur.MUST);// true,false);
+ QueryUtils.check(q2, s);
+ }
+
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+ assertEquals("3 docs should match " + q.toString(), 3, h.length);
+ float score = h[0].score;
+ for (int i = 1; i < h.length; i++) {
+ assertEquals("score #" + i + " is not the same", score, h[i].score,
+ SCORE_COMP_THRESH);
+ }
+ } catch (Error e) {
+ printHits("testBooleanRequiredEqualScores1", h, s);
+ throw e;
}
-
-
- public void testBooleanOptionalNoTiebreaker() throws Exception {
-
- BooleanQuery q = new BooleanQuery();
- {
- DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.0f);
- q1.add(tq("hed","albino"));
- q1.add(tq("dek","albino"));
- q.add(q1, BooleanClause.Occur.SHOULD);//false,false);
- }
- {
- DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.0f);
- q2.add(tq("hed","elephant"));
- q2.add(tq("dek","elephant"));
- q.add(q2, BooleanClause.Occur.SHOULD);//false,false);
- }
- QueryUtils.check(q,s);
-
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
- assertEquals("4 docs should match " + q.toString(),
- 4, h.length);
- float score = h[0].score;
- for (int i = 1; i < h.length-1; i++) { /* note: -1 */
- assertEquals("score #" + i + " is not the same",
- score, h[i].score, SCORE_COMP_THRESH);
- }
- assertEquals("wrong last", "d1", s.doc(h[h.length-1].doc).get("id"));
- float score1 = h[h.length-1].score;
- assertTrue("d1 does not have worse score then others: " +
- score + " >? " + score1,
- score > score1);
- } catch (Error e) {
- printHits("testBooleanOptionalNoTiebreaker",h, s);
- throw e;
- }
+ }
+
+ public void testBooleanOptionalNoTiebreaker() throws Exception {
+
+ BooleanQuery q = new BooleanQuery();
+ {
+ DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.0f);
+ q1.add(tq("hed", "albino"));
+ q1.add(tq("dek", "albino"));
+ q.add(q1, BooleanClause.Occur.SHOULD);// false,false);
+ }
+ {
+ DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.0f);
+ q2.add(tq("hed", "elephant"));
+ q2.add(tq("dek", "elephant"));
+ q.add(q2, BooleanClause.Occur.SHOULD);// false,false);
}
-
-
- public void testBooleanOptionalWithTiebreaker() throws Exception {
-
- BooleanQuery q = new BooleanQuery();
- {
- DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.01f);
- q1.add(tq("hed","albino"));
- q1.add(tq("dek","albino"));
- q.add(q1, BooleanClause.Occur.SHOULD);//false,false);
- }
- {
- DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.01f);
- q2.add(tq("hed","elephant"));
- q2.add(tq("dek","elephant"));
- q.add(q2, BooleanClause.Occur.SHOULD);//false,false);
- }
- QueryUtils.check(q,s);
-
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
-
- assertEquals("4 docs should match " + q.toString(),
- 4, h.length);
-
- float score0 = h[0].score;
- float score1 = h[1].score;
- float score2 = h[2].score;
- float score3 = h[3].score;
-
- String doc0 = s.doc(h[0].doc).get("id");
- String doc1 = s.doc(h[1].doc).get("id");
- String doc2 = s.doc(h[2].doc).get("id");
- String doc3 = s.doc(h[3].doc).get("id");
-
- assertTrue("doc0 should be d2 or d4: " + doc0,
- doc0.equals("d2") || doc0.equals("d4"));
- assertTrue("doc1 should be d2 or d4: " + doc0,
- doc1.equals("d2") || doc1.equals("d4"));
- assertEquals("score0 and score1 should match",
- score0, score1, SCORE_COMP_THRESH);
- assertEquals("wrong third", "d3", doc2);
- assertTrue("d3 does not have worse score then d2 and d4: " +
- score1 + " >? " + score2,
- score1 > score2);
-
- assertEquals("wrong fourth", "d1", doc3);
- assertTrue("d1 does not have worse score then d3: " +
- score2 + " >? " + score3,
- score2 > score3);
-
- } catch (Error e) {
- printHits("testBooleanOptionalWithTiebreaker",h, s);
- throw e;
- }
-
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+ assertEquals("4 docs should match " + q.toString(), 4, h.length);
+ float score = h[0].score;
+ for (int i = 1; i < h.length - 1; i++) { /* note: -1 */
+ assertEquals("score #" + i + " is not the same", score, h[i].score,
+ SCORE_COMP_THRESH);
+ }
+ assertEquals("wrong last", "d1", s.doc(h[h.length - 1].doc).get("id"));
+ float score1 = h[h.length - 1].score;
+ assertTrue("d1 does not have worse score then others: " + score + " >? "
+ + score1, score > score1);
+ } catch (Error e) {
+ printHits("testBooleanOptionalNoTiebreaker", h, s);
+ throw e;
}
-
-
- public void testBooleanOptionalWithTiebreakerAndBoost() throws Exception {
-
- BooleanQuery q = new BooleanQuery();
- {
- DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.01f);
- q1.add(tq("hed","albino", 1.5f));
- q1.add(tq("dek","albino"));
- q.add(q1, BooleanClause.Occur.SHOULD);//false,false);
- }
- {
- DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.01f);
- q2.add(tq("hed","elephant", 1.5f));
- q2.add(tq("dek","elephant"));
- q.add(q2, BooleanClause.Occur.SHOULD);//false,false);
- }
- QueryUtils.check(q,s);
-
-
- ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
-
- try {
-
- assertEquals("4 docs should match " + q.toString(),
- 4, h.length);
-
- float score0 = h[0].score;
- float score1 = h[1].score;
- float score2 = h[2].score;
- float score3 = h[3].score;
-
- String doc0 = s.doc(h[0].doc).get("id");
- String doc1 = s.doc(h[1].doc).get("id");
- String doc2 = s.doc(h[2].doc).get("id");
- String doc3 = s.doc(h[3].doc).get("id");
-
- assertEquals("doc0 should be d4: ", "d4", doc0);
- assertEquals("doc1 should be d3: ", "d3", doc1);
- assertEquals("doc2 should be d2: ", "d2", doc2);
- assertEquals("doc3 should be d1: ", "d1", doc3);
-
- assertTrue("d4 does not have a better score then d3: " +
- score0 + " >? " + score1,
- score0 > score1);
- assertTrue("d3 does not have a better score then d2: " +
- score1 + " >? " + score2,
- score1 > score2);
- assertTrue("d3 does not have a better score then d1: " +
- score2 + " >? " + score3,
- score2 > score3);
-
- } catch (Error e) {
- printHits("testBooleanOptionalWithTiebreakerAndBoost",h, s);
- throw e;
- }
+ }
+
+ public void testBooleanOptionalWithTiebreaker() throws Exception {
+
+ BooleanQuery q = new BooleanQuery();
+ {
+ DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.01f);
+ q1.add(tq("hed", "albino"));
+ q1.add(tq("dek", "albino"));
+ q.add(q1, BooleanClause.Occur.SHOULD);// false,false);
+ }
+ {
+ DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.01f);
+ q2.add(tq("hed", "elephant"));
+ q2.add(tq("dek", "elephant"));
+ q.add(q2, BooleanClause.Occur.SHOULD);// false,false);
}
-
-
-
-
-
-
-
- /** macro */
- protected Query tq(String f, String t) {
- return new TermQuery(new Term(f, t));
- }
- /** macro */
- protected Query tq(String f, String t, float b) {
- Query q = tq(f,t);
- q.setBoost(b);
- return q;
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+
+ assertEquals("4 docs should match " + q.toString(), 4, h.length);
+
+ float score0 = h[0].score;
+ float score1 = h[1].score;
+ float score2 = h[2].score;
+ float score3 = h[3].score;
+
+ String doc0 = s.doc(h[0].doc).get("id");
+ String doc1 = s.doc(h[1].doc).get("id");
+ String doc2 = s.doc(h[2].doc).get("id");
+ String doc3 = s.doc(h[3].doc).get("id");
+
+ assertTrue("doc0 should be d2 or d4: " + doc0, doc0.equals("d2")
+ || doc0.equals("d4"));
+ assertTrue("doc1 should be d2 or d4: " + doc0, doc1.equals("d2")
+ || doc1.equals("d4"));
+ assertEquals("score0 and score1 should match", score0, score1,
+ SCORE_COMP_THRESH);
+ assertEquals("wrong third", "d3", doc2);
+ assertTrue("d3 does not have worse score then d2 and d4: " + score1
+ + " >? " + score2, score1 > score2);
+
+ assertEquals("wrong fourth", "d1", doc3);
+ assertTrue("d1 does not have worse score then d3: " + score2 + " >? "
+ + score3, score2 > score3);
+
+ } catch (Error e) {
+ printHits("testBooleanOptionalWithTiebreaker", h, s);
+ throw e;
}
-
-
- protected void printHits(String test, ScoreDoc[] h, Searcher searcher) throws Exception {
-
- System.err.println("------- " + test + " -------");
-
- DecimalFormat f = new DecimalFormat("0.000000000");
-
- for (int i = 0; i < h.length; i++) {
- Document d = searcher.doc(h[i].doc);
- float score = h[i].score;
- System.err.println("#" + i + ": " + f.format(score) + " - " +
- d.get("id"));
- }
+
+ }
+
+ public void testBooleanOptionalWithTiebreakerAndBoost() throws Exception {
+
+ BooleanQuery q = new BooleanQuery();
+ {
+ DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.01f);
+ q1.add(tq("hed", "albino", 1.5f));
+ q1.add(tq("dek", "albino"));
+ q.add(q1, BooleanClause.Occur.SHOULD);// false,false);
+ }
+ {
+ DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.01f);
+ q2.add(tq("hed", "elephant", 1.5f));
+ q2.add(tq("dek", "elephant"));
+ q.add(q2, BooleanClause.Occur.SHOULD);// false,false);
}
-
+ QueryUtils.check(q, s);
+
+ ScoreDoc[] h = s.search(q, null, 1000).scoreDocs;
+
+ try {
+
+ assertEquals("4 docs should match " + q.toString(), 4, h.length);
+
+ float score0 = h[0].score;
+ float score1 = h[1].score;
+ float score2 = h[2].score;
+ float score3 = h[3].score;
+
+ String doc0 = s.doc(h[0].doc).get("id");
+ String doc1 = s.doc(h[1].doc).get("id");
+ String doc2 = s.doc(h[2].doc).get("id");
+ String doc3 = s.doc(h[3].doc).get("id");
+
+ assertEquals("doc0 should be d4: ", "d4", doc0);
+ assertEquals("doc1 should be d3: ", "d3", doc1);
+ assertEquals("doc2 should be d2: ", "d2", doc2);
+ assertEquals("doc3 should be d1: ", "d1", doc3);
+
+ assertTrue("d4 does not have a better score then d3: " + score0 + " >? "
+ + score1, score0 > score1);
+ assertTrue("d3 does not have a better score then d2: " + score1 + " >? "
+ + score2, score1 > score2);
+ assertTrue("d3 does not have a better score then d1: " + score2 + " >? "
+ + score3, score2 > score3);
+
+ } catch (Error e) {
+ printHits("testBooleanOptionalWithTiebreakerAndBoost", h, s);
+ throw e;
+ }
+ }
+
+ /** macro */
+ protected Query tq(String f, String t) {
+ return new TermQuery(new Term(f, t));
+ }
+
+ /** macro */
+ protected Query tq(String f, String t, float b) {
+ Query q = tq(f, t);
+ q.setBoost(b);
+ return q;
+ }
+
+ protected void printHits(String test, ScoreDoc[] h, Searcher searcher)
+ throws Exception {
+
+ System.err.println("------- " + test + " -------");
+
+ DecimalFormat f = new DecimalFormat("0.000000000");
+
+ for (int i = 0; i < h.length; i++) {
+ Document d = searcher.doc(h[i].doc);
+ float score = h[i].score;
+ System.err
+ .println("#" + i + ": " + f.format(score) + " - " + d.get("id"));
+ }
+ }
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocBoost.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocBoost.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocBoost.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocBoost.java Tue Jul 13 16:12:21 2010
@@ -23,8 +23,8 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.document.*;
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.Term;
import org.apache.lucene.store.RAMDirectory;
@@ -40,8 +40,8 @@ public class TestDocBoost extends Lucene
public void testDocBoost() throws Exception {
RAMDirectory store = new RAMDirectory();
- IndexWriter writer = new IndexWriter(store, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), store,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
Fieldable f1 = new Field("field", "word", Field.Store.YES, Field.Index.ANALYZED);
Fieldable f2 = new Field("field", "word", Field.Store.YES, Field.Index.ANALYZED);
@@ -63,12 +63,13 @@ public class TestDocBoost extends Lucene
writer.addDocument(d2);
writer.addDocument(d3);
writer.addDocument(d4);
- writer.optimize();
+
+ IndexReader reader = writer.getReader();
writer.close();
final float[] scores = new float[4];
- new IndexSearcher(store, true).search
+ new IndexSearcher(reader).search
(new TermQuery(new Term("field", "word")),
new Collector() {
private int base = 0;
@@ -97,5 +98,8 @@ public class TestDocBoost extends Lucene
assertTrue(scores[i] > lastScore);
lastScore = scores[i];
}
+
+ reader.close();
+ store.close();
}
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestDocIdSet.java Tue Jul 13 16:12:21 2010
@@ -30,8 +30,8 @@ import org.apache.lucene.document.Field;
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.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
@@ -104,14 +104,16 @@ public class TestDocIdSet extends Lucene
// Tests that if a Filter produces a null DocIdSet, which is given to
// IndexSearcher, everything works fine. This came up in LUCENE-1754.
Directory dir = new RAMDirectory();
- IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), dir,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
Document doc = new Document();
doc.add(new Field("c", "val", Store.NO, Index.NOT_ANALYZED_NO_NORMS));
writer.addDocument(doc);
+ IndexReader reader = writer.getReader();
writer.close();
// First verify the document is searchable.
- IndexSearcher searcher = new IndexSearcher(dir, true);
+ IndexSearcher searcher = new IndexSearcher(reader);
Assert.assertEquals(1, searcher.search(new MatchAllDocsQuery(), 10).totalHits);
// Now search w/ a Filter which returns a null DocIdSet
@@ -124,6 +126,8 @@ public class TestDocIdSet extends Lucene
Assert.assertEquals(0, searcher.search(new MatchAllDocsQuery(), f, 10).totalHits);
searcher.close();
+ reader.close();
+ dir.close();
}
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestExplanations.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestExplanations.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestExplanations.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestExplanations.java Tue Jul 13 16:12:21 2010
@@ -22,8 +22,9 @@ import org.apache.lucene.queryParser.Par
import org.apache.lucene.analysis.WhitespaceAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.spans.SpanFirstQuery;
import org.apache.lucene.search.spans.SpanNearQuery;
@@ -31,6 +32,7 @@ import org.apache.lucene.search.spans.Sp
import org.apache.lucene.search.spans.SpanOrQuery;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanTermQuery;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
@@ -48,7 +50,9 @@ import org.apache.lucene.util.LuceneTest
*/
public class TestExplanations extends LuceneTestCase {
protected IndexSearcher searcher;
-
+ protected IndexReader reader;
+ protected Directory directory;
+
public static final String KEY = "KEY";
public static final String FIELD = "field";
public static final QueryParser qp =
@@ -57,22 +61,26 @@ public class TestExplanations extends Lu
@Override
protected void tearDown() throws Exception {
searcher.close();
+ reader.close();
+ directory.close();
super.tearDown();
}
@Override
protected void setUp() throws Exception {
super.setUp();
- RAMDirectory directory = new RAMDirectory();
- IndexWriter writer= new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ directory = new RAMDirectory();
+ RandomIndexWriter writer= new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
for (int i = 0; i < docFields.length; i++) {
Document doc = new Document();
doc.add(new Field(KEY, ""+i, Field.Store.NO, Field.Index.NOT_ANALYZED));
doc.add(new Field(FIELD, docFields[i], Field.Store.NO, Field.Index.ANALYZED));
writer.addDocument(doc);
}
+ reader = writer.getReader();
writer.close();
- searcher = new IndexSearcher(directory, true);
+ searcher = new IndexSearcher(reader);
}
protected String[] docFields = {
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCache.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCache.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCache.java Tue Jul 13 16:12:21 2010
@@ -20,8 +20,8 @@ import org.apache.lucene.analysis.Whites
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
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.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
import java.io.IOException;
@@ -40,7 +40,8 @@ public class TestFieldCache extends Luce
protected void setUp() throws Exception {
super.setUp();
RAMDirectory directory = new RAMDirectory();
- IndexWriter writer= new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer= new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
long theLong = Long.MAX_VALUE;
double theDouble = Double.MAX_VALUE;
byte theByte = Byte.MAX_VALUE;
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java Tue Jul 13 16:12:21 2010
@@ -40,16 +40,9 @@ import org.apache.lucene.store.RAMDirect
*/
public class TestFieldCacheRangeFilter extends BaseTestRangeFilter {
- public TestFieldCacheRangeFilter(String name) {
- super(name);
- }
- public TestFieldCacheRangeFilter() {
- super();
- }
-
public void testRangeFilterId() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int medId = ((maxId - minId) / 2);
@@ -135,11 +128,11 @@ public class TestFieldCacheRangeFilter e
public void testFieldCacheRangeFilterRand() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
- String minRP = pad(signedIndex.minR);
- String maxRP = pad(signedIndex.maxR);
+ String minRP = pad(signedIndexDir.minR);
+ String maxRP = pad(signedIndexDir.maxR);
int numDocs = reader.numDocs();
@@ -198,7 +191,7 @@ public class TestFieldCacheRangeFilter e
public void testFieldCacheRangeFilterShorts() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int numDocs = reader.numDocs();
@@ -289,7 +282,7 @@ public class TestFieldCacheRangeFilter e
public void testFieldCacheRangeFilterInts() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int numDocs = reader.numDocs();
@@ -381,7 +374,7 @@ public class TestFieldCacheRangeFilter e
public void testFieldCacheRangeFilterLongs() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int numDocs = reader.numDocs();
@@ -475,7 +468,7 @@ public class TestFieldCacheRangeFilter e
public void testFieldCacheRangeFilterFloats() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int numDocs = reader.numDocs();
@@ -503,7 +496,7 @@ public class TestFieldCacheRangeFilter e
public void testFieldCacheRangeFilterDoubles() throws IOException {
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int numDocs = reader.numDocs();
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFieldCacheTermsFilter.java Tue Jul 13 16:12:21 2010
@@ -23,8 +23,8 @@ import org.apache.lucene.analysis.Keywor
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
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.store.MockRAMDirectory;
import java.util.ArrayList;
@@ -39,16 +39,17 @@ public class TestFieldCacheTermsFilter e
public void testMissingTerms() throws Exception {
String fieldName = "field1";
MockRAMDirectory rd = new MockRAMDirectory();
- IndexWriter w = new IndexWriter(rd, new IndexWriterConfig(TEST_VERSION_CURRENT, new KeywordAnalyzer()));
+ RandomIndexWriter w = new RandomIndexWriter(newRandom(), rd,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new KeywordAnalyzer()));
for (int i = 0; i < 100; i++) {
Document doc = new Document();
int term = i * 10; //terms are units of 10;
doc.add(new Field(fieldName, "" + term, Field.Store.YES, Field.Index.NOT_ANALYZED));
w.addDocument(doc);
}
+ IndexReader reader = w.getReader();
w.close();
- IndexReader reader = IndexReader.open(rd, true);
IndexSearcher searcher = new IndexSearcher(reader);
int numDocs = reader.numDocs();
ScoreDoc[] results;
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java Tue Jul 13 16:12:21 2010
@@ -20,9 +20,9 @@ package org.apache.lucene.search;
import org.apache.lucene.analysis.WhitespaceAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.store.RAMDirectory;
@@ -41,6 +41,7 @@ import java.util.BitSet;
public class TestFilteredQuery extends LuceneTestCase {
private IndexSearcher searcher;
+ private IndexReader reader;
private RAMDirectory directory;
private Query query;
private Filter filter;
@@ -49,7 +50,8 @@ public class TestFilteredQuery extends L
protected void setUp() throws Exception {
super.setUp();
directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter (directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter (newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
Document doc = new Document();
doc.add (new Field("field", "one two three four five", Field.Store.YES, Field.Index.ANALYZED));
@@ -71,10 +73,10 @@ public class TestFilteredQuery extends L
doc.add (new Field("sorter", "c", Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument (doc);
- writer.optimize ();
+ reader = writer.getReader();
writer.close ();
- searcher = new IndexSearcher (directory, true);
+ searcher = new IndexSearcher (reader);
query = new TermQuery (new Term ("field", "three"));
filter = newStaticFilterB();
}
@@ -95,6 +97,7 @@ public class TestFilteredQuery extends L
@Override
protected void tearDown() throws Exception {
searcher.close();
+ reader.close();
directory.close();
super.tearDown();
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestFuzzyQuery.java Tue Jul 13 16:12:21 2010
@@ -29,6 +29,7 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.store.Directory;
@@ -43,7 +44,8 @@ public class TestFuzzyQuery extends Luce
public void testFuzziness() throws Exception {
RAMDirectory directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
addDoc("aaaaa", writer);
addDoc("aaaab", writer);
addDoc("aaabb", writer);
@@ -51,9 +53,10 @@ public class TestFuzzyQuery extends Luce
addDoc("abbbb", writer);
addDoc("bbbbb", writer);
addDoc("ddddd", writer);
- writer.optimize();
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
writer.close();
- IndexSearcher searcher = new IndexSearcher(directory, true);
FuzzyQuery query = new FuzzyQuery(new Term("field", "aaaaa"), FuzzyQuery.defaultMinSimilarity, 0);
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
@@ -189,17 +192,20 @@ public class TestFuzzyQuery extends Luce
assertEquals(0, hits.length);
searcher.close();
+ reader.close();
directory.close();
}
public void testFuzzinessLong() throws Exception {
RAMDirectory directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
addDoc("aaaaaaa", writer);
addDoc("segment", writer);
- writer.optimize();
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
writer.close();
- IndexSearcher searcher = new IndexSearcher(directory, true);
FuzzyQuery query;
// not similar enough:
@@ -277,17 +283,20 @@ public class TestFuzzyQuery extends Luce
}
searcher.close();
+ reader.close();
directory.close();
}
public void testTokenLengthOpt() throws IOException {
RAMDirectory directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
addDoc("12345678911", writer);
addDoc("segment", writer);
- writer.optimize();
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
writer.close();
- IndexSearcher searcher = new IndexSearcher(directory, true);
Query query;
// term not over 10 chars, so optimization shortcuts
@@ -309,20 +318,25 @@ public class TestFuzzyQuery extends Luce
query = new FuzzyQuery(new Term("field", "sdfsdfsdfsdf"), 0.9f);
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(0, hits.length);
+
+ searcher.close();
+ reader.close();
+ directory.close();
}
/** Test the TopTermsBoostOnlyBooleanQueryRewrite rewrite method. */
public void testBoostOnlyRewrite() throws Exception {
RAMDirectory directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
addDoc("Lucene", writer);
addDoc("Lucene", writer);
addDoc("Lucenne", writer);
- writer.optimize();
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
writer.close();
- IndexSearcher searcher = new IndexSearcher(directory, true);
- IndexReader reader = searcher.getIndexReader();
+
FuzzyQuery query = new FuzzyQuery(new Term("field", "Lucene"));
query.setRewriteMethod(new MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite());
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
@@ -333,6 +347,7 @@ public class TestFuzzyQuery extends Luce
assertEquals("Lucenne", reader.document(hits[2].doc).get("field"));
searcher.close();
reader.close();
+ directory.close();
}
public void testGiga() throws Exception {
@@ -340,8 +355,8 @@ public class TestFuzzyQuery extends Luce
StandardAnalyzer analyzer = new StandardAnalyzer(TEST_VERSION_CURRENT);
Directory index = new MockRAMDirectory();
- IndexWriter w = new IndexWriter(index, new IndexWriterConfig(
- TEST_VERSION_CURRENT, analyzer));
+ RandomIndexWriter w = new RandomIndexWriter(newRandom(), index,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, analyzer));
addDoc("Lucene in Action", w);
addDoc("Lucene for Dummies", w);
@@ -370,10 +385,12 @@ public class TestFuzzyQuery extends Luce
ScoreDoc[] hits = searcher.search(q, 10).scoreDocs;
assertEquals(1, hits.length);
assertEquals("Giga byte", searcher.doc(hits[0].doc).get("field"));
+ searcher.close();
r.close();
+ index.close();
}
- private void addDoc(String text, IndexWriter writer) throws IOException {
+ private void addDoc(String text, RandomIndexWriter writer) throws IOException {
Document doc = new Document();
doc.add(new Field("field", text, Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java Tue Jul 13 16:12:21 2010
@@ -18,11 +18,10 @@ package org.apache.lucene.search;
*/
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.store.MockRAMDirectory;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
@@ -30,236 +29,247 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.util.LuceneTestCase;
+
import java.io.IOException;
-import java.util.LinkedList;
import java.util.Collections;
+import java.util.LinkedList;
/**
* This class tests the MultiPhraseQuery class.
- *
- *
+ *
+ *
*/
-public class TestMultiPhraseQuery extends LuceneTestCase
-{
- public TestMultiPhraseQuery(String name) {
- super(name);
- }
+public class TestMultiPhraseQuery extends LuceneTestCase {
+ public TestMultiPhraseQuery(String name) {
+ super(name);
+ }
+
+ public void testPhrasePrefix() throws IOException {
+ MockRAMDirectory indexStore = new MockRAMDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), indexStore,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
+ add("blueberry pie", writer);
+ add("blueberry strudel", writer);
+ add("blueberry pizza", writer);
+ add("blueberry chewing gum", writer);
+ add("bluebird pizza", writer);
+ add("bluebird foobar pizza", writer);
+ add("piccadilly circus", writer);
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
+
+ // search for "blueberry pi*":
+ MultiPhraseQuery query1 = new MultiPhraseQuery();
+ // search for "strawberry pi*":
+ MultiPhraseQuery query2 = new MultiPhraseQuery();
+ query1.add(new Term("body", "blueberry"));
+ query2.add(new Term("body", "strawberry"));
+
+ LinkedList<Term> termsWithPrefix = new LinkedList<Term>();
+ IndexReader ir = reader;
- public void testPhrasePrefix() throws IOException {
- RAMDirectory indexStore = new RAMDirectory();
- IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
- add("blueberry pie", writer);
- add("blueberry strudel", writer);
- add("blueberry pizza", writer);
- add("blueberry chewing gum", writer);
- add("bluebird pizza", writer);
- add("bluebird foobar pizza", writer);
- add("piccadilly circus", writer);
- writer.optimize();
- writer.close();
-
- IndexSearcher searcher = new IndexSearcher(indexStore, true);
-
- // search for "blueberry pi*":
- MultiPhraseQuery query1 = new MultiPhraseQuery();
- // search for "strawberry pi*":
- MultiPhraseQuery query2 = new MultiPhraseQuery();
- query1.add(new Term("body", "blueberry"));
- query2.add(new Term("body", "strawberry"));
-
- LinkedList<Term> termsWithPrefix = new LinkedList<Term>();
- IndexReader ir = IndexReader.open(indexStore, true);
-
- // this TermEnum gives "piccadilly", "pie" and "pizza".
- String prefix = "pi";
- TermEnum te = ir.terms(new Term("body", prefix));
- do {
- if (te.term().text().startsWith(prefix))
- {
- termsWithPrefix.add(te.term());
- }
- } while (te.next());
-
- query1.add(termsWithPrefix.toArray(new Term[0]));
- assertEquals("body:\"blueberry (piccadilly pie pizza)\"", query1.toString());
- query2.add(termsWithPrefix.toArray(new Term[0]));
- assertEquals("body:\"strawberry (piccadilly pie pizza)\"", query2.toString());
-
- ScoreDoc[] result;
- result = searcher.search(query1, null, 1000).scoreDocs;
- assertEquals(2, result.length);
- result = searcher.search(query2, null, 1000).scoreDocs;
- assertEquals(0, result.length);
-
- // search for "blue* pizza":
- MultiPhraseQuery query3 = new MultiPhraseQuery();
- termsWithPrefix.clear();
- prefix = "blue";
- te = ir.terms(new Term("body", prefix));
- do {
- if (te.term().text().startsWith(prefix))
- {
- termsWithPrefix.add(te.term());
- }
- } while (te.next());
- query3.add(termsWithPrefix.toArray(new Term[0]));
- query3.add(new Term("body", "pizza"));
-
- result = searcher.search(query3, null, 1000).scoreDocs;
- assertEquals(2, result.length); // blueberry pizza, bluebird pizza
- assertEquals("body:\"(blueberry bluebird) pizza\"", query3.toString());
-
- // test slop:
- query3.setSlop(1);
- result = searcher.search(query3, null, 1000).scoreDocs;
-
- // just make sure no exc:
- searcher.explain(query3, 0);
-
- assertEquals(3, result.length); // blueberry pizza, bluebird pizza, bluebird foobar pizza
-
- MultiPhraseQuery query4 = new MultiPhraseQuery();
- try {
- query4.add(new Term("field1", "foo"));
- query4.add(new Term("field2", "foobar"));
- fail();
- } catch(IllegalArgumentException e) {
- // okay, all terms must belong to the same field
+ // this TermEnum gives "piccadilly", "pie" and "pizza".
+ String prefix = "pi";
+ TermEnum te = ir.terms(new Term("body", prefix));
+ do {
+ if (te.term().text().startsWith(prefix))
+ {
+ termsWithPrefix.add(te.term());
}
-
- searcher.close();
- indexStore.close();
+ } while (te.next());
- }
-
- private void add(String s, IndexWriter writer) throws IOException {
- Document doc = new Document();
- doc.add(new Field("body", s, Field.Store.YES, Field.Index.ANALYZED));
- writer.addDocument(doc);
- }
-
- public void testBooleanQueryContainingSingleTermPrefixQuery() throws IOException {
- // this tests against bug 33161 (now fixed)
- // In order to cause the bug, the outer query must have more than one term
- // and all terms required.
- // The contained PhraseMultiQuery must contain exactly one term array.
-
- RAMDirectory indexStore = new RAMDirectory();
- IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
- add("blueberry pie", writer);
- add("blueberry chewing gum", writer);
- add("blue raspberry pie", writer);
- writer.optimize();
- writer.close();
-
- IndexSearcher searcher = new IndexSearcher(indexStore, true);
- // This query will be equivalent to +body:pie +body:"blue*"
- BooleanQuery q = new BooleanQuery();
- q.add(new TermQuery(new Term("body", "pie")), BooleanClause.Occur.MUST);
-
- MultiPhraseQuery trouble = new MultiPhraseQuery();
- trouble.add(new Term[] {
- new Term("body", "blueberry"),
- new Term("body", "blue")
- });
- q.add(trouble, BooleanClause.Occur.MUST);
-
- // exception will be thrown here without fix
- ScoreDoc[] hits = searcher.search(q, null, 1000).scoreDocs;
+ query1.add(termsWithPrefix.toArray(new Term[0]));
+ assertEquals("body:\"blueberry (piccadilly pie pizza)\"", query1.toString());
+ query2.add(termsWithPrefix.toArray(new Term[0]));
+ assertEquals("body:\"strawberry (piccadilly pie pizza)\"", query2.toString());
+
+ ScoreDoc[] result;
+ result = searcher.search(query1, null, 1000).scoreDocs;
+ assertEquals(2, result.length);
+ result = searcher.search(query2, null, 1000).scoreDocs;
+ assertEquals(0, result.length);
+
+ // search for "blue* pizza":
+ MultiPhraseQuery query3 = new MultiPhraseQuery();
+ termsWithPrefix.clear();
+ prefix = "blue";
+ te = ir.terms(new Term("body", prefix));
+ do {
+ if (te.term().text().startsWith(prefix))
+ {
+ termsWithPrefix.add(te.term());
+ }
+ } while (te.next());
+ query3.add(termsWithPrefix.toArray(new Term[0]));
+ query3.add(new Term("body", "pizza"));
+
+ result = searcher.search(query3, null, 1000).scoreDocs;
+ assertEquals(2, result.length); // blueberry pizza, bluebird pizza
+ assertEquals("body:\"(blueberry bluebird) pizza\"", query3.toString());
+
+ // test slop:
+ query3.setSlop(1);
+ result = searcher.search(query3, null, 1000).scoreDocs;
- assertEquals("Wrong number of hits", 2, hits.length);
+ // just make sure no exc:
+ searcher.explain(query3, 0);
- // just make sure no exc:
- searcher.explain(q, 0);
+ assertEquals(3, result.length); // blueberry pizza, bluebird pizza, bluebird foobar pizza
- searcher.close();
+ MultiPhraseQuery query4 = new MultiPhraseQuery();
+ try {
+ query4.add(new Term("field1", "foo"));
+ query4.add(new Term("field2", "foobar"));
+ fail();
+ } catch(IllegalArgumentException e) {
+ // okay, all terms must belong to the same field
+ }
+
+ writer.close();
+ searcher.close();
+ reader.close();
+ indexStore.close();
+
+ }
+
+ private void add(String s, RandomIndexWriter writer) throws IOException {
+ Document doc = new Document();
+ doc.add(new Field("body", s, Field.Store.YES, Field.Index.ANALYZED));
+ writer.addDocument(doc);
}
+
+ public void testBooleanQueryContainingSingleTermPrefixQuery()
+ throws IOException {
+ // this tests against bug 33161 (now fixed)
+ // In order to cause the bug, the outer query must have more than one term
+ // and all terms required.
+ // The contained PhraseMultiQuery must contain exactly one term array.
+
+ MockRAMDirectory indexStore = new MockRAMDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), indexStore,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
+ add("blueberry pie", writer);
+ add("blueberry chewing gum", writer);
+ add("blue raspberry pie", writer);
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
+ // This query will be equivalent to +body:pie +body:"blue*"
+ BooleanQuery q = new BooleanQuery();
+ q.add(new TermQuery(new Term("body", "pie")), BooleanClause.Occur.MUST);
+
+ MultiPhraseQuery trouble = new MultiPhraseQuery();
+ trouble.add(new Term[] {new Term("body", "blueberry"),
+ new Term("body", "blue")});
+ q.add(trouble, BooleanClause.Occur.MUST);
+
+ // exception will be thrown here without fix
+ ScoreDoc[] hits = searcher.search(q, null, 1000).scoreDocs;
+
+ assertEquals("Wrong number of hits", 2, hits.length);
+
+ // just make sure no exc:
+ searcher.explain(q, 0);
+ writer.close();
+ searcher.close();
+ reader.close();
+ indexStore.close();
+ }
+
public void testPhrasePrefixWithBooleanQuery() throws IOException {
- RAMDirectory indexStore = new RAMDirectory();
- IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new StandardAnalyzer(
- TEST_VERSION_CURRENT, Collections.emptySet())));
+ MockRAMDirectory indexStore = new MockRAMDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), indexStore,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new StandardAnalyzer(TEST_VERSION_CURRENT, Collections.emptySet())));
add("This is a test", "object", writer);
add("a note", "note", writer);
- writer.close();
- IndexSearcher searcher = new IndexSearcher(indexStore, true);
-
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
+
// This query will be equivalent to +type:note +body:"a t*"
BooleanQuery q = new BooleanQuery();
q.add(new TermQuery(new Term("type", "note")), BooleanClause.Occur.MUST);
-
+
MultiPhraseQuery trouble = new MultiPhraseQuery();
trouble.add(new Term("body", "a"));
- trouble.add(new Term[] { new Term("body", "test"), new Term("body", "this") });
+ trouble
+ .add(new Term[] {new Term("body", "test"), new Term("body", "this")});
q.add(trouble, BooleanClause.Occur.MUST);
-
+
// exception will be thrown here without fix for #35626:
ScoreDoc[] hits = searcher.search(q, null, 1000).scoreDocs;
assertEquals("Wrong number of hits", 0, hits.length);
+ writer.close();
searcher.close();
+ reader.close();
+ indexStore.close();
}
-
+
public void testNoDocs() throws Exception {
MockRAMDirectory indexStore = new MockRAMDirectory();
- IndexWriter writer = new IndexWriter(indexStore, new StandardAnalyzer(TEST_VERSION_CURRENT, Collections.emptySet()), true, IndexWriter.MaxFieldLength.LIMITED);
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), indexStore,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new StandardAnalyzer(TEST_VERSION_CURRENT, Collections.emptySet())));
add("a note", "note", writer);
- writer.close();
-
- IndexSearcher searcher = new IndexSearcher(indexStore, true);
-
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
+
MultiPhraseQuery q = new MultiPhraseQuery();
q.add(new Term("body", "a"));
- q.add(new Term[] { new Term("body", "nope"), new Term("body", "nope") });
- assertEquals("Wrong number of hits", 0, searcher.search(q, null, 1).totalHits);
-
+ q.add(new Term[] {new Term("body", "nope"), new Term("body", "nope")});
+ assertEquals("Wrong number of hits", 0,
+ searcher.search(q, null, 1).totalHits);
+
// just make sure no exc:
searcher.explain(q, 0);
-
+
+ writer.close();
searcher.close();
+ reader.close();
indexStore.close();
}
- public void testHashCodeAndEquals(){
+ public void testHashCodeAndEquals() {
MultiPhraseQuery query1 = new MultiPhraseQuery();
MultiPhraseQuery query2 = new MultiPhraseQuery();
assertEquals(query1.hashCode(), query2.hashCode());
- assertEquals(query1,query2);
+ assertEquals(query1, query2);
- Term term1= new Term("someField","someText");
+ Term term1 = new Term("someField", "someText");
query1.add(term1);
query2.add(term1);
assertEquals(query1.hashCode(), query2.hashCode());
- assertEquals(query1,query2);
+ assertEquals(query1, query2);
- Term term2= new Term("someField","someMoreText");
+ Term term2 = new Term("someField", "someMoreText");
query1.add(term2);
- assertFalse(query1.hashCode()==query2.hashCode());
+ assertFalse(query1.hashCode() == query2.hashCode());
assertFalse(query1.equals(query2));
query2.add(term2);
assertEquals(query1.hashCode(), query2.hashCode());
- assertEquals(query1,query2);
+ assertEquals(query1, query2);
}
-
- private void add(String s, String type, IndexWriter writer) throws IOException {
+ private void add(String s, String type, RandomIndexWriter writer)
+ throws IOException {
Document doc = new Document();
doc.add(new Field("body", s, Field.Store.YES, Field.Index.ANALYZED));
doc.add(new Field("type", type, Field.Store.YES, Field.Index.NOT_ANALYZED));
writer.addDocument(doc);
}
-
+
// LUCENE-2526
public void testEmptyToString() {
new MultiPhraseQuery().toString();
}
-
+
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java Tue Jul 13 16:12:21 2010
@@ -22,8 +22,8 @@ import org.apache.lucene.analysis.Whites
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
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.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
@@ -38,15 +38,8 @@ public class TestMultiTermConstantScore
/** threshold for comparing floats */
public static final float SCORE_COMP_THRESH = 1e-6f;
- public TestMultiTermConstantScore(String name) {
- super(name);
- }
-
- public TestMultiTermConstantScore() {
- super();
- }
-
Directory small;
+ IndexReader reader;
void assertEquals(String m, float e, float a) {
assertEquals(m, e, a, SCORE_COMP_THRESH);
@@ -59,13 +52,13 @@ public class TestMultiTermConstantScore
@Override
protected void setUp() throws Exception {
super.setUp();
-
String[] data = new String[] { "A 1 2 3 4 5 6", "Z 4 5 6", null,
"B 2 4 5 6", "Y 3 5 6", null, "C 3 6",
"X 4 5 6" };
small = new RAMDirectory();
- IndexWriter writer = new IndexWriter(small, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(rand, small,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
for (int i = 0; i < data.length; i++) {
Document doc = new Document();
@@ -81,10 +74,17 @@ public class TestMultiTermConstantScore
writer.addDocument(doc);
}
- writer.optimize();
+ reader = writer.getReader();
writer.close();
}
+ @Override
+ protected void tearDown() throws Exception {
+ reader.close();
+ small.close();
+ super.tearDown();
+ }
+
/** macro for readability */
public static Query csrq(String f, String l, String h, boolean il, boolean ih) {
TermRangeQuery query = new TermRangeQuery(f, l, h, il, ih);
@@ -146,7 +146,6 @@ public class TestMultiTermConstantScore
public void testEqualScores() throws IOException {
// NOTE: uses index build in *this* setUp
- IndexReader reader = IndexReader.open(small, true);
IndexSearcher search = new IndexSearcher(reader);
ScoreDoc[] result;
@@ -175,7 +174,6 @@ public class TestMultiTermConstantScore
public void testBoost() throws IOException {
// NOTE: uses index build in *this* setUp
- IndexReader reader = IndexReader.open(small, true);
IndexSearcher search = new IndexSearcher(reader);
// test for correct application of query normalization
@@ -247,7 +245,6 @@ public class TestMultiTermConstantScore
public void testBooleanOrderUnAffected() throws IOException {
// NOTE: uses index build in *this* setUp
- IndexReader reader = IndexReader.open(small, true);
IndexSearcher search = new IndexSearcher(reader);
// first do a regular TermRangeQuery which uses term expansion so
@@ -278,7 +275,7 @@ public class TestMultiTermConstantScore
public void testRangeQueryId() throws IOException {
// NOTE: uses index build in *super* setUp
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int medId = ((maxId - minId) / 2);
@@ -405,7 +402,7 @@ public class TestMultiTermConstantScore
public void testRangeQueryIdCollating() throws IOException {
// NOTE: uses index build in *super* setUp
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
int medId = ((maxId - minId) / 2);
@@ -488,11 +485,11 @@ public class TestMultiTermConstantScore
public void testRangeQueryRand() throws IOException {
// NOTE: uses index build in *super* setUp
- IndexReader reader = IndexReader.open(signedIndex.index, true);
+ IndexReader reader = signedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
- String minRP = pad(signedIndex.minR);
- String maxRP = pad(signedIndex.maxR);
+ String minRP = pad(signedIndexDir.minR);
+ String maxRP = pad(signedIndexDir.maxR);
int numDocs = reader.numDocs();
@@ -551,11 +548,11 @@ public class TestMultiTermConstantScore
// NOTE: uses index build in *super* setUp
// using the unsigned index because collation seems to ignore hyphens
- IndexReader reader = IndexReader.open(unsignedIndex.index, true);
+ IndexReader reader = unsignedIndexReader;
IndexSearcher search = new IndexSearcher(reader);
- String minRP = pad(unsignedIndex.minR);
- String maxRP = pad(unsignedIndex.maxR);
+ String minRP = pad(unsignedIndexDir.minR);
+ String maxRP = pad(unsignedIndexDir.maxR);
int numDocs = reader.numDocs();
@@ -615,8 +612,8 @@ public class TestMultiTermConstantScore
/* build an index */
RAMDirectory farsiIndex = new RAMDirectory();
- IndexWriter writer = new IndexWriter(farsiIndex, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(rand, farsiIndex,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
Document doc = new Document();
doc.add(new Field("content", "\u0633\u0627\u0628", Field.Store.YES,
Field.Index.NOT_ANALYZED));
@@ -625,10 +622,9 @@ public class TestMultiTermConstantScore
Field.Index.NOT_ANALYZED));
writer.addDocument(doc);
- writer.optimize();
+ IndexReader reader = writer.getReader();
writer.close();
- IndexReader reader = IndexReader.open(farsiIndex, true);
IndexSearcher search = new IndexSearcher(reader);
// Neither Java 1.4.2 nor 1.5.0 has Farsi Locale collation available in
@@ -649,14 +645,16 @@ public class TestMultiTermConstantScore
1000).scoreDocs;
assertEquals("The index Term should be included.", 1, result.length);
search.close();
+ reader.close();
+ farsiIndex.close();
}
public void testDanish() throws Exception {
/* build an index */
RAMDirectory danishIndex = new RAMDirectory();
- IndexWriter writer = new IndexWriter(danishIndex, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(rand, danishIndex,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
// Danish collation orders the words below in the given order
// (example taken from TestSort.testInternationalSort() ).
@@ -669,10 +667,9 @@ public class TestMultiTermConstantScore
Field.Store.YES, Field.Index.NOT_ANALYZED));
writer.addDocument(doc);
}
- writer.optimize();
+ IndexReader reader = writer.getReader();
writer.close();
- IndexReader reader = IndexReader.open(danishIndex, true);
IndexSearcher search = new IndexSearcher(reader);
Collator c = Collator.getInstance(new Locale("da", "dk"));
@@ -687,5 +684,7 @@ public class TestMultiTermConstantScore
(csrq("content", "H\u00C5T", "MAND", F, F, c), null, 1000).scoreDocs;
assertEquals("The index Term should not be included.", 0, result.length);
search.close();
+ reader.close();
+ danishIndex.close();
}
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java Tue Jul 13 16:12:21 2010
@@ -26,8 +26,9 @@ import org.apache.lucene.analysis.Whites
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumericField;
-import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
@@ -44,7 +45,8 @@ public class TestMultiValuedNumericRange
final Random rnd = newRandom();
RAMDirectory directory = new RAMDirectory();
- IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(rnd, directory,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)));
DecimalFormat format = new DecimalFormat("00000000000", new DecimalFormatSymbols(Locale.US));
@@ -56,10 +58,11 @@ public class TestMultiValuedNumericRange
doc.add(new NumericField("trie", Field.Store.NO, true).setIntValue(value));
}
writer.addDocument(doc);
- }
+ }
+ IndexReader reader = writer.getReader();
writer.close();
- Searcher searcher=new IndexSearcher(directory, true);
+ Searcher searcher=new IndexSearcher(reader);
for (int i=0; i<50*_TestUtil.getRandomMultiplier(); i++) {
int lower=rnd.nextInt(Integer.MAX_VALUE);
int upper=rnd.nextInt(Integer.MAX_VALUE);
@@ -73,7 +76,7 @@ public class TestMultiValuedNumericRange
assertEquals("Returned count for NumericRangeQuery and TermRangeQuery must be equal", trTopDocs.totalHits, nrTopDocs.totalHits );
}
searcher.close();
-
+ reader.close();
directory.close();
}
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestNot.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestNot.java?rev=963780&r1=963779&r2=963780&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestNot.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestNot.java Tue Jul 13 16:12:21 2010
@@ -19,8 +19,9 @@ package org.apache.lucene.search;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.analysis.SimpleAnalyzer;
@@ -39,22 +40,24 @@ public class TestNot extends LuceneTestC
public void testNot() throws Exception {
RAMDirectory store = new RAMDirectory();
- IndexWriter writer = new IndexWriter(store, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new SimpleAnalyzer(
- TEST_VERSION_CURRENT)));
+ RandomIndexWriter writer = new RandomIndexWriter(newRandom(), store,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
Document d1 = new Document();
d1.add(new Field("field", "a b", Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(d1);
- writer.optimize();
- writer.close();
+ IndexReader reader = writer.getReader();
- Searcher searcher = new IndexSearcher(store, true);
+ Searcher searcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser(TEST_VERSION_CURRENT, "field", new SimpleAnalyzer(TEST_VERSION_CURRENT));
Query query = parser.parse("a NOT b");
//System.out.println(query);
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(0, hits.length);
+ writer.close();
+ searcher.close();
+ reader.close();
+ store.close();
}
}