You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by bu...@apache.org on 2011/01/24 20:38:47 UTC
svn commit: r1062944 [3/4] - in /lucene/dev/branches/realtime_search: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/solr/contrib/uima/
dev-tools/maven/ dev-tools/maven/lucene/ dev-tools/maven/lucene/contrib/
dev-tools/maven/lucene/contrib/...
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Mon Jan 24 19:38:40 2011
@@ -38,12 +38,13 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.document.NumericField;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.Similarity;
+import org.apache.lucene.search.SimilarityProvider;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Bits;
@@ -171,15 +172,7 @@ public class TestBackwardsCompatibility
try {
writer = new IndexWriter(dir, newIndexWriterConfig(
- TEST_VERSION_CURRENT, new MockAnalyzer())
- .setMergeScheduler(new SerialMergeScheduler()) // no threads!
- );
- // TODO: Make IndexWriter fail on open!
- if (random.nextBoolean()) {
- writer.optimize();
- } else {
- reader = writer.getReader();
- }
+ TEST_VERSION_CURRENT, new MockAnalyzer()));
fail("IndexWriter creation should not pass for "+unsupportedNames[i]);
} catch (IndexFormatTooOldException e) {
// pass
@@ -188,17 +181,13 @@ public class TestBackwardsCompatibility
e.printStackTrace(System.out);
}
} finally {
- if (reader != null) reader.close();
- reader = null;
+ // we should fail to open IW, and so it should be null when we get here.
+ // However, if the test fails (i.e., IW did not fail on open), we need
+ // to close IW. However, if merges are run, IW may throw
+ // IndexFormatTooOldException, and we don't want to mask the fail()
+ // above, so close without waiting for merges.
if (writer != null) {
- try {
- writer.close();
- } catch (IndexFormatTooOldException e) {
- // OK -- since IW gives merge scheduler a chance
- // to merge at close, it's possible and fine to
- // hit this exc here
- writer.close(false);
- }
+ writer.close(false);
}
writer = null;
}
@@ -424,7 +413,7 @@ public class TestBackwardsCompatibility
Term searchTerm = new Term("id", "6");
int delCount = reader.deleteDocuments(searchTerm);
assertEquals("wrong delete count", 1, delCount);
- reader.setNorm(searcher.search(new TermQuery(new Term("id", "22")), 10).scoreDocs[0].doc, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(searcher.search(new TermQuery(new Term("id", "22")), 10).scoreDocs[0].doc, "content", searcher.getSimilarityProvider().get("content").encodeNormValue(2.0f));
reader.close();
searcher.close();
@@ -472,7 +461,7 @@ public class TestBackwardsCompatibility
Term searchTerm = new Term("id", "6");
int delCount = reader.deleteDocuments(searchTerm);
assertEquals("wrong delete count", 1, delCount);
- reader.setNorm(22, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(22, "content", searcher.getSimilarityProvider().get("content").encodeNormValue(2.0f));
reader.close();
// make sure they "took":
@@ -531,7 +520,7 @@ public class TestBackwardsCompatibility
assertEquals("didn't delete the right number of documents", 1, delCount);
// Set one norm so we get a .s0 file:
- reader.setNorm(21, "content", Similarity.getDefault().encodeNormValue(1.5f));
+ reader.setNorm(21, "content", conf.getSimilarityProvider().get("content").encodeNormValue(1.5f));
reader.close();
}
@@ -568,7 +557,8 @@ public class TestBackwardsCompatibility
assertEquals("didn't delete the right number of documents", 1, delCount);
// Set one norm so we get a .s0 file:
- reader.setNorm(21, "content", Similarity.getDefault().encodeNormValue(1.5f));
+ SimilarityProvider sim = new DefaultSimilarity();
+ reader.setNorm(21, "content", sim.get("content").encodeNormValue(1.5f));
reader.close();
// The numbering of fields can vary depending on which
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestDeletionPolicy.java Mon Jan 24 19:38:40 2011
@@ -30,7 +30,6 @@ import org.apache.lucene.index.IndexWrit
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.Similarity;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
@@ -608,7 +607,7 @@ public class TestDeletionPolicy extends
writer.close();
IndexReader reader = IndexReader.open(dir, policy, false);
reader.deleteDocument(3*i+1);
- reader.setNorm(4*i+1, "content", Similarity.getDefault().encodeNormValue(2.0F));
+ reader.setNorm(4*i+1, "content", conf.getSimilarityProvider().get("content").encodeNormValue(2.0F));
IndexSearcher searcher = new IndexSearcher(reader);
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(16*(1+i), hits.length);
@@ -716,7 +715,7 @@ public class TestDeletionPolicy extends
writer.close();
IndexReader reader = IndexReader.open(dir, policy, false);
reader.deleteDocument(3);
- reader.setNorm(5, "content", Similarity.getDefault().encodeNormValue(2.0F));
+ reader.setNorm(5, "content", conf.getSimilarityProvider().get("content").encodeNormValue(2.0F));
IndexSearcher searcher = new IndexSearcher(reader);
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals(16, hits.length);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexFileDeleter.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexFileDeleter.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexFileDeleter.java Mon Jan 24 19:38:40 2011
@@ -18,6 +18,7 @@ package org.apache.lucene.index;
*/
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
@@ -67,9 +68,9 @@ public class TestIndexFileDeleter extend
Term searchTerm = new Term("id", "7");
int delCount = reader.deleteDocuments(searchTerm);
assertEquals("didn't delete the right number of documents", 1, delCount);
-
+ Similarity sim = new DefaultSimilarity().get("content");
// Set one norm so we get a .s0 file:
- reader.setNorm(21, "content", Similarity.getDefault().encodeNormValue(1.5f));
+ reader.setNorm(21, "content", sim.encodeNormValue(1.5f));
reader.close();
// Now, artificially create an extra .del file & extra
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReader.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReader.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReader.java Mon Jan 24 19:38:40 2011
@@ -39,11 +39,12 @@ import org.apache.lucene.document.SetBas
import org.apache.lucene.index.IndexReader.FieldOption;
import org.apache.lucene.index.codecs.CodecProvider;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.FieldCache;
+import org.apache.lucene.search.Similarity;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.Similarity;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
@@ -464,8 +465,9 @@ public class TestIndexReader extends Luc
// expected
}
+ Similarity sim = new DefaultSimilarity().get("aaa");
try {
- reader.setNorm(5, "aaa", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(5, "aaa", sim.encodeNormValue(2.0f));
fail("setNorm after close failed to throw IOException");
} catch (AlreadyClosedException e) {
// expected
@@ -504,8 +506,9 @@ public class TestIndexReader extends Luc
// expected
}
+ Similarity sim = new DefaultSimilarity().get("aaa");
try {
- reader.setNorm(5, "aaa", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(5, "aaa", sim.encodeNormValue(2.0f));
fail("setNorm should have hit LockObtainFailedException");
} catch (LockObtainFailedException e) {
// expected
@@ -535,7 +538,8 @@ public class TestIndexReader extends Luc
// now open reader & set norm for doc 0
IndexReader reader = IndexReader.open(dir, false);
- reader.setNorm(0, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ Similarity sim = new DefaultSimilarity().get("content");
+ reader.setNorm(0, "content", sim.encodeNormValue(2.0f));
// we should be holding the write lock now:
assertTrue("locked", IndexWriter.isLocked(dir));
@@ -549,7 +553,7 @@ public class TestIndexReader extends Luc
IndexReader reader2 = IndexReader.open(dir, false);
// set norm again for doc 0
- reader.setNorm(0, "content", Similarity.getDefault().encodeNormValue(3.0f));
+ reader.setNorm(0, "content", sim.encodeNormValue(3.0f));
assertTrue("locked", IndexWriter.isLocked(dir));
reader.close();
@@ -579,15 +583,16 @@ public class TestIndexReader extends Luc
addDoc(writer, searchTerm.text());
writer.close();
+ Similarity sim = new DefaultSimilarity().get("content");
// now open reader & set norm for doc 0 (writes to
// _0_1.s0)
reader = IndexReader.open(dir, false);
- reader.setNorm(0, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(0, "content", sim.encodeNormValue(2.0f));
reader.close();
// now open reader again & set norm for doc 0 (writes to _0_2.s0)
reader = IndexReader.open(dir, false);
- reader.setNorm(0, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(0, "content", sim.encodeNormValue(2.0f));
reader.close();
assertFalse("failed to remove first generation norms file on writing second generation",
dir.fileExists("_0_1.s0"));
@@ -966,13 +971,13 @@ public class TestIndexReader extends Luc
dir.setMaxSizeInBytes(thisDiskFree);
dir.setRandomIOExceptionRate(rate);
-
+ Similarity sim = new DefaultSimilarity().get("content");
try {
if (0 == x) {
int docId = 12;
for(int i=0;i<13;i++) {
reader.deleteDocument(docId);
- reader.setNorm(docId, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(docId, "content", sim.encodeNormValue(2.0f));
docId += 12;
}
}
@@ -1130,8 +1135,9 @@ public class TestIndexReader extends Luc
}
reader = IndexReader.open(dir, false);
+ Similarity sim = new DefaultSimilarity().get("content");
try {
- reader.setNorm(1, "content", Similarity.getDefault().encodeNormValue(2.0f));
+ reader.setNorm(1, "content", sim.encodeNormValue(2.0f));
fail("did not hit exception when calling setNorm on an invalid doc number");
} catch (ArrayIndexOutOfBoundsException e) {
// expected
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderClone.java Mon Jan 24 19:38:40 2011
@@ -18,6 +18,7 @@ package org.apache.lucene.index;
*/
import org.apache.lucene.index.SegmentReader.Norm;
+import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
@@ -272,13 +273,14 @@ public class TestIndexReaderClone extend
* @throws Exception
*/
private void performDefaultTests(IndexReader r1) throws Exception {
- float norm1 = Similarity.getDefault().decodeNormValue(MultiNorms.norms(r1, "field1")[4]);
+ Similarity sim = new DefaultSimilarity().get("field1");
+ float norm1 = sim.decodeNormValue(MultiNorms.norms(r1, "field1")[4]);
IndexReader pr1Clone = (IndexReader) r1.clone();
pr1Clone.deleteDocument(10);
- pr1Clone.setNorm(4, "field1", Similarity.getDefault().encodeNormValue(0.5f));
- assertTrue(Similarity.getDefault().decodeNormValue(MultiNorms.norms(r1, "field1")[4]) == norm1);
- assertTrue(Similarity.getDefault().decodeNormValue(MultiNorms.norms(pr1Clone, "field1")[4]) != norm1);
+ pr1Clone.setNorm(4, "field1", sim.encodeNormValue(0.5f));
+ assertTrue(sim.decodeNormValue(MultiNorms.norms(r1, "field1")[4]) == norm1);
+ assertTrue(sim.decodeNormValue(MultiNorms.norms(pr1Clone, "field1")[4]) != norm1);
final Bits delDocs = MultiFields.getDeletedDocs(r1);
assertTrue(delDocs == null || !delDocs.get(10));
@@ -327,7 +329,8 @@ public class TestIndexReaderClone extend
TestIndexReaderReopen.createIndex(random, dir1, false);
SegmentReader origSegmentReader = getOnlySegmentReader(IndexReader.open(dir1, false));
origSegmentReader.deleteDocument(1);
- origSegmentReader.setNorm(4, "field1", Similarity.getDefault().encodeNormValue(0.5f));
+ Similarity sim = new DefaultSimilarity().get("field1");
+ origSegmentReader.setNorm(4, "field1", sim.encodeNormValue(0.5f));
SegmentReader clonedSegmentReader = (SegmentReader) origSegmentReader
.clone();
@@ -426,8 +429,9 @@ public class TestIndexReaderClone extend
final Directory dir1 = newDirectory();
TestIndexReaderReopen.createIndex(random, dir1, false);
IndexReader orig = IndexReader.open(dir1, false);
- orig.setNorm(1, "field1", Similarity.getDefault().encodeNormValue(17.0f));
- final byte encoded = Similarity.getDefault().encodeNormValue(17.0f);
+ Similarity sim = new DefaultSimilarity().get("field1");
+ orig.setNorm(1, "field1", sim.encodeNormValue(17.0f));
+ final byte encoded = sim.encodeNormValue(17.0f);
assertEquals(encoded, MultiNorms.norms(orig, "field1")[1]);
// the cloned segmentreader should have 2 references, 1 to itself, and 1 to
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java Mon Jan 24 19:38:40 2011
@@ -32,6 +32,7 @@ import org.apache.lucene.index.IndexWrit
import org.apache.lucene.index.SegmentReader.Norm;
import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.Similarity;
+import org.apache.lucene.search.SimilarityProvider;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
@@ -50,7 +51,7 @@ public class TestIndexReaderCloneNorms e
private static final int NUM_FIELDS = 10;
- private Similarity similarityOne;
+ private SimilarityProvider similarityOne;
private Analyzer anlzr;
@@ -203,19 +204,20 @@ public class TestIndexReaderCloneNorms e
IndexReader reader4C = (IndexReader) reader3C.clone();
SegmentReader segmentReader4C = getOnlySegmentReader(reader4C);
assertEquals(4, reader3CCNorm.bytesRef().get());
- reader4C.setNorm(5, "field1", Similarity.getDefault().encodeNormValue(0.33f));
+ Similarity sim = new DefaultSimilarity().get("field1");
+ reader4C.setNorm(5, "field1", sim.encodeNormValue(0.33f));
// generate a cannot update exception in reader1
try {
- reader3C.setNorm(1, "field1", Similarity.getDefault().encodeNormValue(0.99f));
+ reader3C.setNorm(1, "field1", sim.encodeNormValue(0.99f));
fail("did not hit expected exception");
} catch (Exception ex) {
// expected
}
// norm values should be different
- assertTrue(Similarity.getDefault().decodeNormValue(segmentReader3C.norms("field1")[5])
- != Similarity.getDefault().decodeNormValue(segmentReader4C.norms("field1")[5]));
+ assertTrue(sim.decodeNormValue(segmentReader3C.norms("field1")[5])
+ != sim.decodeNormValue(segmentReader4C.norms("field1")[5]));
Norm reader4CCNorm = segmentReader4C.norms.get("field1");
assertEquals(3, reader3CCNorm.bytesRef().get());
assertEquals(1, reader4CCNorm.bytesRef().get());
@@ -223,7 +225,7 @@ public class TestIndexReaderCloneNorms e
IndexReader reader5C = (IndexReader) reader4C.clone();
SegmentReader segmentReader5C = getOnlySegmentReader(reader5C);
Norm reader5CCNorm = segmentReader5C.norms.get("field1");
- reader5C.setNorm(5, "field1", Similarity.getDefault().encodeNormValue(0.7f));
+ reader5C.setNorm(5, "field1", sim.encodeNormValue(0.7f));
assertEquals(1, reader5CCNorm.bytesRef().get());
reader5C.close();
@@ -237,7 +239,7 @@ public class TestIndexReaderCloneNorms e
private void createIndex(Random random, Directory dir) throws IOException {
IndexWriter iw = new IndexWriter(dir, newIndexWriterConfig(
TEST_VERSION_CURRENT, anlzr).setOpenMode(OpenMode.CREATE)
- .setMaxBufferedDocs(5).setSimilarity(similarityOne));
+ .setMaxBufferedDocs(5).setSimilarityProvider(similarityOne));
LogMergePolicy lmp = (LogMergePolicy) iw.getConfig().getMergePolicy();
lmp.setMergeFactor(3);
lmp.setUseCompoundFile(true);
@@ -256,8 +258,9 @@ public class TestIndexReaderCloneNorms e
// System.out.println(" and: for "+k+" from "+newNorm+" to "+origNorm);
modifiedNorms.set(i, Float.valueOf(newNorm));
modifiedNorms.set(k, Float.valueOf(origNorm));
- ir.setNorm(i, "f" + 1, Similarity.getDefault().encodeNormValue(newNorm));
- ir.setNorm(k, "f" + 1, Similarity.getDefault().encodeNormValue(origNorm));
+ Similarity sim = new DefaultSimilarity().get("f" + 1);
+ ir.setNorm(i, "f" + 1, sim.encodeNormValue(newNorm));
+ ir.setNorm(k, "f" + 1, sim.encodeNormValue(origNorm));
// System.out.println("setNorm i: "+i);
// break;
}
@@ -277,7 +280,8 @@ public class TestIndexReaderCloneNorms e
assertEquals("number of norms mismatches", numDocNorms, b.length);
ArrayList<Float> storedNorms = (i == 1 ? modifiedNorms : norms);
for (int j = 0; j < b.length; j++) {
- float norm = Similarity.getDefault().decodeNormValue(b[j]);
+ Similarity sim = new DefaultSimilarity().get(field);
+ float norm = sim.decodeNormValue(b[j]);
float norm1 = storedNorms.get(j).floatValue();
assertEquals("stored norm value of " + field + " for doc " + j + " is "
+ norm + " - a mismatch!", norm, norm1, 0.000001);
@@ -289,7 +293,7 @@ public class TestIndexReaderCloneNorms e
throws IOException {
IndexWriterConfig conf = newIndexWriterConfig(
TEST_VERSION_CURRENT, anlzr).setOpenMode(OpenMode.APPEND)
- .setMaxBufferedDocs(5).setSimilarity(similarityOne);
+ .setMaxBufferedDocs(5).setSimilarityProvider(similarityOne);
LogMergePolicy lmp = (LogMergePolicy) conf.getMergePolicy();
lmp.setMergeFactor(3);
lmp.setUseCompoundFile(compound);
@@ -303,7 +307,7 @@ public class TestIndexReaderCloneNorms e
// create the next document
private Document newDoc() {
Document d = new Document();
- float boost = nextNorm();
+ float boost = nextNorm("anyfield"); // in this test the same similarity is used for all fields so it does not matter what field is passed
for (int i = 0; i < 10; i++) {
Field f = newField("f" + i, "v" + i, Store.NO, Index.NOT_ANALYZED);
f.setBoost(boost);
@@ -313,11 +317,12 @@ public class TestIndexReaderCloneNorms e
}
// return unique norm values that are unchanged by encoding/decoding
- private float nextNorm() {
+ private float nextNorm(String fname) {
float norm = lastNorm + normDelta;
+ Similarity sim = new DefaultSimilarity().get(fname);
do {
- float norm1 = Similarity.getDefault().decodeNormValue(
- Similarity.getDefault().encodeNormValue(norm));
+ float norm1 = sim.decodeNormValue(
+ sim.encodeNormValue(norm));
if (norm1 > lastNorm) {
// System.out.println(norm1+" > "+lastNorm);
norm = norm1;
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java Mon Jan 24 19:38:40 2011
@@ -35,9 +35,11 @@ import org.apache.lucene.document.Field.
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Similarity;
+import org.apache.lucene.search.SimilarityProvider;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
@@ -615,8 +617,9 @@ public class TestIndexReaderReopen exten
IndexReader reader2 = reader1.reopen();
modifier = IndexReader.open(dir1, false);
- modifier.setNorm(1, "field1", Similarity.getDefault().encodeNormValue(50f));
- modifier.setNorm(1, "field2", Similarity.getDefault().encodeNormValue(50f));
+ SimilarityProvider sim = new DefaultSimilarity();
+ modifier.setNorm(1, "field1", sim.get("field1").encodeNormValue(50f));
+ modifier.setNorm(1, "field2", sim.get("field2").encodeNormValue(50f));
modifier.close();
IndexReader reader3 = reader2.reopen();
@@ -709,7 +712,8 @@ public class TestIndexReaderReopen exten
protected void modifyIndex(int i) throws IOException {
if (i % 3 == 0) {
IndexReader modifier = IndexReader.open(dir, false);
- modifier.setNorm(i, "field1", Similarity.getDefault().encodeNormValue(50f));
+ Similarity sim = new DefaultSimilarity().get("field1");
+ modifier.setNorm(i, "field1", sim.encodeNormValue(50f));
modifier.close();
} else if (i % 3 == 1) {
IndexReader modifier = IndexReader.open(dir, false);
@@ -989,9 +993,10 @@ public class TestIndexReaderReopen exten
}
case 1: {
IndexReader reader = IndexReader.open(dir, false);
- reader.setNorm(4, "field1", Similarity.getDefault().encodeNormValue(123f));
- reader.setNorm(44, "field2", Similarity.getDefault().encodeNormValue(222f));
- reader.setNorm(44, "field4", Similarity.getDefault().encodeNormValue(22f));
+ SimilarityProvider sim = new DefaultSimilarity();
+ reader.setNorm(4, "field1", sim.get("field1").encodeNormValue(123f));
+ reader.setNorm(44, "field2", sim.get("field2").encodeNormValue(222f));
+ reader.setNorm(44, "field4", sim.get("field4").encodeNormValue(22f));
reader.close();
break;
}
@@ -1012,8 +1017,9 @@ public class TestIndexReaderReopen exten
}
case 4: {
IndexReader reader = IndexReader.open(dir, false);
- reader.setNorm(5, "field1", Similarity.getDefault().encodeNormValue(123f));
- reader.setNorm(55, "field2", Similarity.getDefault().encodeNormValue(222f));
+ SimilarityProvider sim = new DefaultSimilarity();
+ reader.setNorm(5, "field1", sim.get("field1").encodeNormValue(123f));
+ reader.setNorm(55, "field2", sim.get("field2").encodeNormValue(222f));
reader.close();
break;
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java Mon Jan 24 19:38:40 2011
@@ -27,7 +27,7 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.index.DocumentsWriterPerThread.IndexingChain;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.search.DefaultSimilarity;
-import org.apache.lucene.search.Similarity;
+import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.util.LuceneTestCase;
import org.junit.Test;
@@ -55,7 +55,8 @@ public class TestIndexWriterConfig exten
assertEquals(KeepOnlyLastCommitDeletionPolicy.class, conf.getIndexDeletionPolicy().getClass());
assertEquals(ConcurrentMergeScheduler.class, conf.getMergeScheduler().getClass());
assertEquals(OpenMode.CREATE_OR_APPEND, conf.getOpenMode());
- assertTrue(Similarity.getDefault() == conf.getSimilarity());
+ // we don't need to assert this, it should be unspecified
+ assertTrue(IndexSearcher.getDefaultSimilarityProvider() == conf.getSimilarityProvider());
assertEquals(IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL, conf.getTermIndexInterval());
assertEquals(IndexWriterConfig.getDefaultWriteLockTimeout(), conf.getWriteLockTimeout());
assertEquals(IndexWriterConfig.WRITE_LOCK_TIMEOUT, IndexWriterConfig.getDefaultWriteLockTimeout());
@@ -78,7 +79,7 @@ public class TestIndexWriterConfig exten
getters.add("getMaxFieldLength");
getters.add("getMergeScheduler");
getters.add("getOpenMode");
- getters.add("getSimilarity");
+ getters.add("getSimilarityProvider");
getters.add("getTermIndexInterval");
getters.add("getWriteLockTimeout");
getters.add("getDefaultWriteLockTimeout");
@@ -175,12 +176,13 @@ public class TestIndexWriterConfig exten
conf.setMergeScheduler(null);
assertEquals(ConcurrentMergeScheduler.class, conf.getMergeScheduler().getClass());
- // Test Similarity
- assertTrue(Similarity.getDefault() == conf.getSimilarity());
- conf.setSimilarity(new MySimilarity());
- assertEquals(MySimilarity.class, conf.getSimilarity().getClass());
- conf.setSimilarity(null);
- assertTrue(Similarity.getDefault() == conf.getSimilarity());
+ // Test Similarity:
+ // we shouldnt assert what the default is, just that its not null.
+ assertTrue(IndexSearcher.getDefaultSimilarityProvider() == conf.getSimilarityProvider());
+ conf.setSimilarityProvider(new MySimilarity());
+ assertEquals(MySimilarity.class, conf.getSimilarityProvider().getClass());
+ conf.setSimilarityProvider(null);
+ assertTrue(IndexSearcher.getDefaultSimilarityProvider() == conf.getSimilarityProvider());
// Test IndexingChain
assertTrue(DocumentsWriterPerThread.defaultIndexingChain == conf.getIndexingChain());
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestMaxTermFrequency.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestMaxTermFrequency.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestMaxTermFrequency.java Mon Jan 24 19:38:40 2011
@@ -46,7 +46,7 @@ public class TestMaxTermFrequency extend
dir = newDirectory();
IndexWriterConfig config = newIndexWriterConfig(TEST_VERSION_CURRENT,
new MockAnalyzer(MockTokenizer.SIMPLE, true));
- config.setSimilarity(new TestSimilarity());
+ config.setSimilarityProvider(new TestSimilarity());
RandomIndexWriter writer = new RandomIndexWriter(random, dir, config);
Document doc = new Document();
Field foo = newField("foo", "", Field.Store.NO, Field.Index.ANALYZED);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNRTThreads.java Mon Jan 24 19:38:40 2011
@@ -39,6 +39,7 @@ import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.document.Field;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.NamedThreadFactory;
@@ -132,6 +133,13 @@ public class TestNRTThreads extends Luce
if (doc == null) {
break;
}
+ final String addedField;
+ if (random.nextBoolean()) {
+ addedField = "extra" + random.nextInt(10);
+ doc.add(new Field(addedField, "a random field", Field.Store.NO, Field.Index.ANALYZED));
+ } else {
+ addedField = null;
+ }
if (random.nextBoolean()) {
if (VERBOSE) {
//System.out.println(Thread.currentThread().getName() + ": add doc id:" + doc.get("id"));
@@ -166,6 +174,9 @@ public class TestNRTThreads extends Luce
toDeleteIDs.clear();
}
addCount.getAndIncrement();
+ if (addedField != null) {
+ doc.removeField(addedField);
+ }
} catch (Exception exc) {
System.out.println(Thread.currentThread().getName() + ": hit exc");
exc.printStackTrace();
@@ -348,6 +359,7 @@ public class TestNRTThreads extends Luce
writer.commit();
assertEquals("index=" + writer.segString() + " addCount=" + addCount + " delCount=" + delCount, addCount.get() - delCount.get(), writer.numDocs());
+ assertFalse(writer.anyNonBulkMerges);
writer.close(false);
_TestUtil.checkIndex(dir);
dir.close();
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNorms.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNorms.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestNorms.java Mon Jan 24 19:38:40 2011
@@ -30,6 +30,7 @@ import org.apache.lucene.document.Field.
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.Similarity;
+import org.apache.lucene.search.SimilarityProvider;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
@@ -49,7 +50,7 @@ public class TestNorms extends LuceneTes
private static final int NUM_FIELDS = 10;
- private Similarity similarityOne;
+ private SimilarityProvider similarityOne;
private Analyzer anlzr;
private int numDocNorms;
private ArrayList<Float> norms;
@@ -151,7 +152,7 @@ public class TestNorms extends LuceneTes
private void createIndex(Random random, Directory dir) throws IOException {
IndexWriter iw = new IndexWriter(dir, newIndexWriterConfig(
TEST_VERSION_CURRENT, anlzr).setOpenMode(OpenMode.CREATE)
- .setMaxBufferedDocs(5).setSimilarity(similarityOne));
+ .setMaxBufferedDocs(5).setSimilarityProvider(similarityOne));
LogMergePolicy lmp = (LogMergePolicy) iw.getConfig().getMergePolicy();
lmp.setMergeFactor(3);
lmp.setUseCompoundFile(true);
@@ -169,8 +170,9 @@ public class TestNorms extends LuceneTes
//System.out.println(" and: for "+k+" from "+newNorm+" to "+origNorm);
modifiedNorms.set(i, Float.valueOf(newNorm));
modifiedNorms.set(k, Float.valueOf(origNorm));
- ir.setNorm(i, "f"+1, Similarity.getDefault().encodeNormValue(newNorm));
- ir.setNorm(k, "f"+1, Similarity.getDefault().encodeNormValue(origNorm));
+ Similarity sim = new DefaultSimilarity().get("f"+1);
+ ir.setNorm(i, "f"+1, sim.encodeNormValue(newNorm));
+ ir.setNorm(k, "f"+1, sim.encodeNormValue(origNorm));
}
ir.close();
}
@@ -184,7 +186,7 @@ public class TestNorms extends LuceneTes
assertEquals("number of norms mismatches",numDocNorms,b.length);
ArrayList<Float> storedNorms = (i==1 ? modifiedNorms : norms);
for (int j = 0; j < b.length; j++) {
- float norm = similarityOne.decodeNormValue(b[j]);
+ float norm = similarityOne.get(field).decodeNormValue(b[j]);
float norm1 = storedNorms.get(j).floatValue();
assertEquals("stored norm value of "+field+" for doc "+j+" is "+norm+" - a mismatch!", norm, norm1, 0.000001);
}
@@ -195,7 +197,7 @@ public class TestNorms extends LuceneTes
private void addDocs(Random random, Directory dir, int ndocs, boolean compound) throws IOException {
IndexWriter iw = new IndexWriter(dir, newIndexWriterConfig(
TEST_VERSION_CURRENT, anlzr).setOpenMode(OpenMode.APPEND)
- .setMaxBufferedDocs(5).setSimilarity(similarityOne));
+ .setMaxBufferedDocs(5).setSimilarityProvider(similarityOne));
LogMergePolicy lmp = (LogMergePolicy) iw.getConfig().getMergePolicy();
lmp.setMergeFactor(3);
lmp.setUseCompoundFile(compound);
@@ -208,7 +210,7 @@ public class TestNorms extends LuceneTes
// create the next document
private Document newDoc() {
Document d = new Document();
- float boost = nextNorm();
+ float boost = nextNorm("anyfield"); // in this test the same similarity is used for all fields so it does not matter what field is passed
for (int i = 0; i < 10; i++) {
Field f = newField("f"+i,"v"+i,Store.NO,Index.NOT_ANALYZED);
f.setBoost(boost);
@@ -218,10 +220,11 @@ public class TestNorms extends LuceneTes
}
// return unique norm values that are unchanged by encoding/decoding
- private float nextNorm() {
+ private float nextNorm(String fname) {
float norm = lastNorm + normDelta;
+ Similarity similarity = similarityOne.get(fname);
do {
- float norm1 = similarityOne.decodeNormValue(similarityOne.encodeNormValue(norm));
+ float norm1 = similarity.decodeNormValue(similarity.encodeNormValue(norm));
if (norm1 > lastNorm) {
//System.out.println(norm1+" > "+lastNorm);
norm = norm1;
@@ -258,7 +261,7 @@ public class TestNorms extends LuceneTes
public void testCustomEncoder() throws Exception {
Directory dir = newDirectory();
IndexWriterConfig config = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer());
- config.setSimilarity(new CustomNormEncodingSimilarity());
+ config.setSimilarityProvider(new CustomNormEncodingSimilarity());
RandomIndexWriter writer = new RandomIndexWriter(random, dir, config);
Document doc = new Document();
Field foo = newField("foo", "", Field.Store.NO, Field.Index.ANALYZED);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestOmitTf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestOmitTf.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestOmitTf.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestOmitTf.java Mon Jan 24 19:38:40 2011
@@ -35,13 +35,11 @@ import org.apache.lucene.search.Explanat
public class TestOmitTf extends LuceneTestCase {
- public static class SimpleSimilarity extends Similarity {
+ public static class SimpleSimilarity extends Similarity implements SimilarityProvider {
@Override public float computeNorm(String field, FieldInvertState state) { return state.getBoost(); }
- @Override public float queryNorm(float sumOfSquaredWeights) { return 1.0f; }
@Override public float tf(float freq) { return freq; }
@Override public float sloppyFreq(int distance) { return 2.0f; }
@Override public float idf(int docFreq, int numDocs) { return 1.0f; }
- @Override public float coord(int overlap, int maxOverlap) { return 1.0f; }
@Override public IDFExplanation idfExplain(Collection<Term> terms, IndexSearcher searcher) throws IOException {
return new IDFExplanation() {
@Override
@@ -54,6 +52,11 @@ public class TestOmitTf extends LuceneTe
}
};
}
+ public float queryNorm(float sumOfSquaredWeights) { return 1.0f; }
+ public float coord(int overlap, int maxOverlap) { return 1.0f; }
+ public Similarity get(String field) {
+ return this;
+ }
}
// Tests whether the DocumentWriter correctly enable the
@@ -251,7 +254,7 @@ public class TestOmitTf extends LuceneTe
dir,
newIndexWriterConfig(TEST_VERSION_CURRENT, analyzer).
setMaxBufferedDocs(2).
- setSimilarity(new SimpleSimilarity()).
+ setSimilarityProvider(new SimpleSimilarity()).
setMergePolicy(newLogMergePolicy(2))
);
@@ -281,7 +284,7 @@ public class TestOmitTf extends LuceneTe
* Verify the index
*/
IndexSearcher searcher = new IndexSearcher(dir, true);
- searcher.setSimilarity(new SimpleSimilarity());
+ searcher.setSimilarityProvider(new SimpleSimilarity());
Term a = new Term("noTf", term);
Term b = new Term("tf", term);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestParallelReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestParallelReader.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestParallelReader.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/TestParallelReader.java Mon Jan 24 19:38:40 2011
@@ -147,7 +147,8 @@ public class TestParallelReader extends
assertTrue(pr.isCurrent());
IndexReader modifier = IndexReader.open(dir1, false);
- modifier.setNorm(0, "f1", Similarity.getDefault().encodeNormValue(100f));
+ SimilarityProvider sim = new DefaultSimilarity();
+ modifier.setNorm(0, "f1", sim.get("f1").encodeNormValue(100f));
modifier.close();
// one of the two IndexReaders which ParallelReader is using
@@ -155,7 +156,7 @@ public class TestParallelReader extends
assertFalse(pr.isCurrent());
modifier = IndexReader.open(dir2, false);
- modifier.setNorm(0, "f3", Similarity.getDefault().encodeNormValue(100f));
+ modifier.setNorm(0, "f3", sim.get("f3").encodeNormValue(100f));
modifier.close();
// now both are not current anymore
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/index.31.cfs.zip
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/index.31.cfs.zip?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/index.31.nocfs.zip
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/index/index.31.nocfs.zip?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/JustCompileSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/JustCompileSearch.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/JustCompileSearch.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/JustCompileSearch.java Mon Jan 24 19:38:40 2011
@@ -19,7 +19,6 @@ package org.apache.lucene.search;
import java.io.IOException;
-import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.index.FieldInvertState;
@@ -244,11 +243,6 @@ final class JustCompileSearch {
static final class JustCompileSimilarity extends Similarity {
@Override
- public float coord(int overlap, int maxOverlap) {
- throw new UnsupportedOperationException(UNSUPPORTED_MSG);
- }
-
- @Override
public float idf(int docFreq, int numDocs) {
throw new UnsupportedOperationException(UNSUPPORTED_MSG);
}
@@ -259,11 +253,6 @@ final class JustCompileSearch {
}
@Override
- public float queryNorm(float sumOfSquaredWeights) {
- throw new UnsupportedOperationException(UNSUPPORTED_MSG);
- }
-
- @Override
public float sloppyFreq(int distance) {
throw new UnsupportedOperationException(UNSUPPORTED_MSG);
}
@@ -271,14 +260,28 @@ final class JustCompileSearch {
@Override
public float tf(float freq) {
throw new UnsupportedOperationException(UNSUPPORTED_MSG);
+ }
+ }
+
+ static final class JustCompileSimilarityProvider implements SimilarityProvider {
+
+ public float queryNorm(float sumOfSquaredWeights) {
+ throw new UnsupportedOperationException(UNSUPPORTED_MSG);
+ }
+
+ public float coord(int overlap, int maxOverlap) {
+ throw new UnsupportedOperationException(UNSUPPORTED_MSG);
}
+ public Similarity get(String field) {
+ throw new UnsupportedOperationException(UNSUPPORTED_MSG);
+ }
}
static final class JustCompileSpanFilter extends SpanFilter {
@Override
- public SpanFilterResult bitSpans(IndexReader reader) throws IOException {
+ public SpanFilterResult bitSpans(AtomicReaderContext context) throws IOException {
throw new UnsupportedOperationException(UNSUPPORTED_MSG);
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/QueryUtils.java Mon Jan 24 19:38:40 2011
@@ -158,7 +158,7 @@ public class QueryUtils {
0 < edge ? r : IndexReader.open(makeEmptyIndex(random, 0), true))
};
IndexSearcher out = new IndexSearcher(new MultiReader(readers));
- out.setSimilarity(s.getSimilarity());
+ out.setSimilarityProvider(s.getSimilarityProvider());
return out;
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBoolean2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBoolean2.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBoolean2.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestBoolean2.java Mon Jan 24 19:38:40 2011
@@ -208,9 +208,9 @@ public class TestBoolean2 extends Lucene
public void testQueries10() throws Exception {
String queryText = "+w3 +xx +w2 zz";
int[] expDocNrs = {2, 3};
- Similarity oldSimilarity = searcher.getSimilarity();
+ SimilarityProvider oldSimilarity = searcher.getSimilarityProvider();
try {
- searcher.setSimilarity(new DefaultSimilarity(){
+ searcher.setSimilarityProvider(new DefaultSimilarity(){
@Override
public float coord(int overlap, int maxOverlap) {
return overlap / ((float)maxOverlap - 1);
@@ -218,7 +218,7 @@ public class TestBoolean2 extends Lucene
});
queriesTest(queryText, expDocNrs);
} finally {
- searcher.setSimilarity(oldSimilarity);
+ searcher.setSimilarityProvider(oldSimilarity);
}
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestComplexExplanations.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestComplexExplanations.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestComplexExplanations.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestComplexExplanations.java Mon Jan 24 19:38:40 2011
@@ -34,7 +34,7 @@ public class TestComplexExplanations ext
@Override
public void setUp() throws Exception {
super.setUp();
- searcher.setSimilarity(createQnorm1Similarity());
+ searcher.setSimilarityProvider(createQnorm1Similarity());
}
// must be static for weight serialization tests
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestConstantScoreQuery.java Mon Jan 24 19:38:40 2011
@@ -97,7 +97,7 @@ public class TestConstantScoreQuery exte
searcher = new IndexSearcher(reader);
// set a similarity that does not normalize our boost away
- searcher.setSimilarity(new DefaultSimilarity() {
+ searcher.setSimilarityProvider(new DefaultSimilarity() {
@Override
public float queryNorm(float sumOfSquaredWeights) {
return 1.0f;
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Mon Jan 24 19:38:40 2011
@@ -73,7 +73,7 @@ public class TestDisjunctionMaxQuery ext
}
}
- public Similarity sim = new TestSimilarity();
+ public SimilarityProvider sim = new TestSimilarity();
public Directory index;
public IndexReader r;
public IndexSearcher s;
@@ -85,7 +85,7 @@ public class TestDisjunctionMaxQuery ext
index = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random, index,
newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer())
- .setSimilarity(sim));
+ .setSimilarityProvider(sim));
// hed is the most important field, dek is secondary
@@ -150,7 +150,7 @@ public class TestDisjunctionMaxQuery ext
r = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
s = new IndexSearcher(r);
- s.setSimilarity(sim);
+ s.setSimilarityProvider(sim);
}
@Override
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMatchAllDocsQuery.java Mon Jan 24 19:38:40 2011
@@ -69,7 +69,7 @@ public class TestMatchAllDocsQuery exten
assertEquals("one", ir.document(hits[2].doc).get("key"));
// change norm & retest
- ir.setNorm(0, "key", Similarity.getDefault().encodeNormValue(400f));
+ ir.setNorm(0, "key", is.getSimilarityProvider().get("key").encodeNormValue(400f));
normsQuery = new MatchAllDocsQuery("key");
hits = is.search(normsQuery, null, 1000).scoreDocs;
assertEquals(3, hits.length);
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java Mon Jan 24 19:38:40 2011
@@ -22,6 +22,7 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.search.Explanation.IDFExplanation;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.document.Document;
@@ -30,6 +31,7 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.util.LuceneTestCase;
import java.io.IOException;
+import java.util.Collection;
import java.util.LinkedList;
/**
@@ -285,4 +287,44 @@ public class TestMultiPhraseQuery extend
new MultiPhraseQuery().toString();
}
+ public void testCustomIDF() throws Exception {
+ Directory indexStore = newDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(random, indexStore);
+ add("This is a test", "object", writer);
+ add("a note", "note", writer);
+
+ IndexReader reader = writer.getReader();
+ IndexSearcher searcher = new IndexSearcher(reader);
+ searcher.setSimilarityProvider(new DefaultSimilarity() {
+
+ @Override
+ public IDFExplanation idfExplain(Collection<Term> terms,
+ IndexSearcher searcher) throws IOException {
+ return new IDFExplanation() {
+
+ @Override
+ public float getIdf() {
+ return 10f;
+ }
+
+ @Override
+ public String explain() {
+ return "just a test";
+ }
+
+ };
+ }
+ });
+
+ MultiPhraseQuery query = new MultiPhraseQuery();
+ query.add(new Term[] { new Term("body", "this"), new Term("body", "that") });
+ query.add(new Term("body", "is"));
+ Weight weight = query.createWeight(searcher);
+ assertEquals(10f * 10f, weight.sumOfSquaredWeights(), 0.001f);
+
+ writer.close();
+ searcher.close();
+ reader.close();
+ indexStore.close();
+ }
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java Mon Jan 24 19:38:40 2011
@@ -40,6 +40,7 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.store.Directory;
import org.apache.lucene.search.payloads.PayloadSpanUtil;
+import org.apache.lucene.search.spans.MultiSpansWrapper;
import org.apache.lucene.search.spans.SpanNearQuery;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanTermQuery;
@@ -243,14 +244,15 @@ public class TestPositionIncrement exten
"a a b c d e a f g h i j a b k k")));
writer.addDocument(doc);
- IndexReader r = new SlowMultiReaderWrapper(writer.getReader());
+ final IndexReader readerFromWriter = writer.getReader();
+ SlowMultiReaderWrapper r = new SlowMultiReaderWrapper(readerFromWriter);
DocsAndPositionsEnum tp = r.termPositionsEnum(r.getDeletedDocs(),
"content",
new BytesRef("a"));
int count = 0;
- assertTrue(tp.nextDoc() != tp.NO_MORE_DOCS);
+ assertTrue(tp.nextDoc() != DocsAndPositionsEnum.NO_MORE_DOCS);
// "a" occurs 4 times
assertEquals(4, tp.freq());
int expected = 0;
@@ -260,9 +262,9 @@ public class TestPositionIncrement exten
assertEquals(6, tp.nextPosition());
// only one doc has "a"
- assertEquals(tp.NO_MORE_DOCS, tp.nextDoc());
+ assertEquals(DocsAndPositionsEnum.NO_MORE_DOCS, tp.nextDoc());
- IndexSearcher is = new IndexSearcher(r);
+ IndexSearcher is = new IndexSearcher(readerFromWriter);
SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a"));
SpanTermQuery stq2 = new SpanTermQuery(new Term("content", "k"));
@@ -274,7 +276,7 @@ public class TestPositionIncrement exten
if (VERBOSE) {
System.out.println("\ngetPayloadSpans test");
}
- Spans pspans = snq.getSpans(is.getIndexReader());
+ Spans pspans = MultiSpansWrapper.wrap(is.getTopReaderContext(), snq);
while (pspans.next()) {
if (VERBOSE) {
System.out.println("doc " + pspans.doc() + ": span " + pspans.start()
@@ -289,11 +291,11 @@ public class TestPositionIncrement exten
}
}
}
- assertEquals(5, count);
assertTrue(sawZero);
+ assertEquals(5, count);
// System.out.println("\ngetSpans test");
- Spans spans = snq.getSpans(is.getIndexReader());
+ Spans spans = MultiSpansWrapper.wrap(is.getTopReaderContext(), snq);
count = 0;
sawZero = false;
while (spans.next()) {
@@ -308,7 +310,7 @@ public class TestPositionIncrement exten
// System.out.println("\nPayloadSpanUtil test");
sawZero = false;
- PayloadSpanUtil psu = new PayloadSpanUtil(is.getIndexReader());
+ PayloadSpanUtil psu = new PayloadSpanUtil(is.getTopReaderContext());
Collection<byte[]> pls = psu.getPayloadsForQuery(snq);
count = pls.size();
for (byte[] bytes : pls) {
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSetNorm.java Mon Jan 24 19:38:40 2011
@@ -51,10 +51,11 @@ public class TestSetNorm extends LuceneT
// reset the boost of each instance of this document
IndexReader reader = IndexReader.open(store, false);
- reader.setNorm(0, "field", Similarity.getDefault().encodeNormValue(1.0f));
- reader.setNorm(1, "field", Similarity.getDefault().encodeNormValue(2.0f));
- reader.setNorm(2, "field", Similarity.getDefault().encodeNormValue(4.0f));
- reader.setNorm(3, "field", Similarity.getDefault().encodeNormValue(16.0f));
+ Similarity similarity = new DefaultSimilarity().get("field");
+ reader.setNorm(0, "field", similarity.encodeNormValue(1.0f));
+ reader.setNorm(1, "field", similarity.encodeNormValue(2.0f));
+ reader.setNorm(2, "field", similarity.encodeNormValue(4.0f));
+ reader.setNorm(3, "field", similarity.encodeNormValue(16.0f));
reader.close();
// check that searches are ordered by this boost
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSimilarity.java Mon Jan 24 19:38:40 2011
@@ -39,13 +39,11 @@ import org.apache.lucene.search.Explanat
*/
public class TestSimilarity extends LuceneTestCase {
- public static class SimpleSimilarity extends Similarity {
+ public static class SimpleSimilarity extends Similarity implements SimilarityProvider {
@Override public float computeNorm(String field, FieldInvertState state) { return state.getBoost(); }
- @Override public float queryNorm(float sumOfSquaredWeights) { return 1.0f; }
@Override public float tf(float freq) { return freq; }
@Override public float sloppyFreq(int distance) { return 2.0f; }
@Override public float idf(int docFreq, int numDocs) { return 1.0f; }
- @Override public float coord(int overlap, int maxOverlap) { return 1.0f; }
@Override public IDFExplanation idfExplain(Collection<Term> terms, IndexSearcher searcher) throws IOException {
return new IDFExplanation() {
@Override
@@ -58,13 +56,18 @@ public class TestSimilarity extends Luce
}
};
}
+ public float queryNorm(float sumOfSquaredWeights) { return 1.0f; }
+ public float coord(int overlap, int maxOverlap) { return 1.0f; }
+ public Similarity get(String field) {
+ return this;
+ }
}
public void testSimilarity() throws Exception {
Directory store = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random, store,
newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer())
- .setSimilarity(new SimpleSimilarity()));
+ .setSimilarityProvider(new SimpleSimilarity()));
Document d1 = new Document();
d1.add(newField("field", "a c", Field.Store.YES, Field.Index.ANALYZED));
@@ -78,7 +81,7 @@ public class TestSimilarity extends Luce
writer.close();
IndexSearcher searcher = new IndexSearcher(reader);
- searcher.setSimilarity(new SimpleSimilarity());
+ searcher.setSimilarityProvider(new SimpleSimilarity());
Term a = new Term("field", "a");
Term b = new Term("field", "b");
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java Mon Jan 24 19:38:40 2011
@@ -21,13 +21,14 @@ import java.util.List;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.English;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.ReaderUtil;
public class TestSpanQueryFilter extends LuceneTestCase {
@@ -40,15 +41,18 @@ public class TestSpanQueryFilter extends
Field.Store.NO, Field.Index.ANALYZED));
writer.addDocument(document);
}
- IndexReader reader = writer.getReader();
+ final int number = 10;
+ IndexReader reader = writer.getReader();
writer.close();
-
- SpanTermQuery query = new SpanTermQuery(new Term("field", English.intToEnglish(10).trim()));
+ AtomicReaderContext[] leaves = ReaderUtil.leaves(reader.getTopReaderContext());
+ int subIndex = ReaderUtil.subIndex(number, leaves); // find the reader with this document in it
+
+ SpanTermQuery query = new SpanTermQuery(new Term("field", English.intToEnglish(number).trim()));
SpanQueryFilter filter = new SpanQueryFilter(query);
- SpanFilterResult result = filter.bitSpans(new SlowMultiReaderWrapper(reader));
+ SpanFilterResult result = filter.bitSpans(leaves[subIndex]);
DocIdSet docIdSet = result.getDocIdSet();
assertTrue("docIdSet is null and it shouldn't be", docIdSet != null);
- assertContainsDocId("docIdSet doesn't contain docId 10", docIdSet, 10);
+ assertContainsDocId("docIdSet doesn't contain docId 10", docIdSet, number);
List<SpanFilterResult.PositionInfo> spans = result.getPositions();
assertTrue("spans is null and it shouldn't be", spans != null);
int size = getDocIdSetSize(docIdSet);
@@ -60,6 +64,7 @@ public class TestSpanQueryFilter extends
//There should be two positions in each
assertTrue("info.getPositions() Size: " + info.getPositions().size() + " is not: " + 2, info.getPositions().size() == 2);
}
+
reader.close();
dir.close();
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java Mon Jan 24 19:38:40 2011
@@ -26,9 +26,8 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.util.English;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Similarity;
+import org.apache.lucene.search.SimilarityProvider;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.store.RAMDirectory;
@@ -112,13 +111,13 @@ public class PayloadHelper {
* @throws IOException
*/
// TODO: randomize
- public IndexSearcher setUp(Random random, Similarity similarity, int numDocs) throws IOException {
+ public IndexSearcher setUp(Random random, SimilarityProvider similarity, int numDocs) throws IOException {
Directory directory = new MockDirectoryWrapper(random, new RAMDirectory());
PayloadAnalyzer analyzer = new PayloadAnalyzer();
// TODO randomize this
IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(
- TEST_VERSION_CURRENT, analyzer).setSimilarity(similarity));
+ TEST_VERSION_CURRENT, analyzer).setSimilarityProvider(similarity));
// writer.infoStream = System.out;
for (int i = 0; i < numDocs; i++) {
Document doc = new Document();
@@ -127,11 +126,11 @@ public class PayloadHelper {
doc.add(new Field(NO_PAYLOAD_FIELD, English.intToEnglish(i), Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
}
- reader = new SlowMultiReaderWrapper(IndexReader.open(writer));
+ reader = IndexReader.open(writer);
writer.close();
IndexSearcher searcher = new IndexSearcher(reader);
- searcher.setSimilarity(similarity);
+ searcher.setSimilarityProvider(similarity);
return searcher;
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java Mon Jan 24 19:38:40 2011
@@ -105,7 +105,7 @@ public class TestPayloadNearQuery extend
directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random, directory,
newIndexWriterConfig(TEST_VERSION_CURRENT, new PayloadAnalyzer())
- .setSimilarity(similarity));
+ .setSimilarityProvider(similarity));
//writer.infoStream = System.out;
for (int i = 0; i < 1000; i++) {
Document doc = new Document();
@@ -118,7 +118,7 @@ public class TestPayloadNearQuery extend
writer.close();
searcher = new IndexSearcher(reader);
- searcher.setSimilarity(similarity);
+ searcher.setSimilarityProvider(similarity);
}
@Override
@@ -301,7 +301,7 @@ public class TestPayloadNearQuery extend
@Override public float scorePayload(int docId, String fieldName, int start, int end, byte[] payload, int offset, int length) {
//we know it is size 4 here, so ignore the offset/length
- return payload[0];
+ return payload[offset];
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Make everything else 1 so we see the effect of the payload
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java Mon Jan 24 19:38:40 2011
@@ -26,9 +26,9 @@ import org.apache.lucene.search.CheckHit
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.DefaultSimilarity;
+import org.apache.lucene.search.spans.MultiSpansWrapper;
import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.search.spans.Spans;
-import org.apache.lucene.search.spans.TermSpans;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
@@ -39,7 +39,6 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.index.Payload;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.store.Directory;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
@@ -111,7 +110,7 @@ public class TestPayloadTermQuery extend
directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random, directory,
newIndexWriterConfig(TEST_VERSION_CURRENT, new PayloadAnalyzer())
- .setSimilarity(similarity));
+ .setSimilarityProvider(similarity));
//writer.infoStream = System.out;
for (int i = 0; i < 1000; i++) {
Document doc = new Document();
@@ -122,11 +121,11 @@ public class TestPayloadTermQuery extend
doc.add(newField("multiField", English.intToEnglish(i) + " " + English.intToEnglish(i), Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
}
- reader = new SlowMultiReaderWrapper(writer.getReader());
+ reader = writer.getReader();
writer.close();
searcher = new IndexSearcher(reader);
- searcher.setSimilarity(similarity);
+ searcher.setSimilarityProvider(similarity);
}
@Override
@@ -153,9 +152,8 @@ public class TestPayloadTermQuery extend
assertTrue(doc.score + " does not equal: " + 1, doc.score == 1);
}
CheckHits.checkExplanations(query, PayloadHelper.FIELD, searcher, true);
- Spans spans = query.getSpans(searcher.getIndexReader());
+ Spans spans = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), query);
assertTrue("spans is null and it shouldn't be", spans != null);
- assertTrue("spans is not an instanceof " + TermSpans.class, spans instanceof TermSpans);
/*float score = hits.score(0);
for (int i =1; i < hits.length(); i++)
{
@@ -205,9 +203,8 @@ public class TestPayloadTermQuery extend
}
assertTrue(numTens + " does not equal: " + 10, numTens == 10);
CheckHits.checkExplanations(query, "field", searcher, true);
- Spans spans = query.getSpans(searcher.getIndexReader());
+ Spans spans = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), query);
assertTrue("spans is null and it shouldn't be", spans != null);
- assertTrue("spans is not an instanceof " + TermSpans.class, spans instanceof TermSpans);
//should be two matches per document
int count = 0;
//100 hits times 2 matches per hit, we should have 200 in count
@@ -223,7 +220,7 @@ public class TestPayloadTermQuery extend
new MaxPayloadFunction(), false);
IndexSearcher theSearcher = new IndexSearcher(directory, true);
- theSearcher.setSimilarity(new FullSimilarity());
+ theSearcher.setSimilarityProvider(new FullSimilarity());
TopDocs hits = searcher.search(query, null, 100);
assertTrue("hits is null and it shouldn't be", hits != null);
assertTrue("hits Size: " + hits.totalHits + " is not: " + 100, hits.totalHits == 100);
@@ -247,9 +244,8 @@ public class TestPayloadTermQuery extend
}
assertTrue(numTens + " does not equal: " + 10, numTens == 10);
CheckHits.checkExplanations(query, "field", searcher, true);
- Spans spans = query.getSpans(searcher.getIndexReader());
+ Spans spans = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), query);
assertTrue("spans is null and it shouldn't be", spans != null);
- assertTrue("spans is not an instanceof " + TermSpans.class, spans instanceof TermSpans);
//should be two matches per document
int count = 0;
//100 hits times 2 matches per hit, we should have 200 in count
@@ -293,7 +289,7 @@ public class TestPayloadTermQuery extend
@Override
public float scorePayload(int docId, String fieldName, int start, int end, byte[] payload, int offset, int length) {
//we know it is size 4 here, so ignore the offset/length
- return payload[0];
+ return payload[offset];
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -333,7 +329,7 @@ public class TestPayloadTermQuery extend
static class FullSimilarity extends DefaultSimilarity{
public float scorePayload(int docId, String fieldName, byte[] payload, int offset, int length) {
//we know it is size 4 here, so ignore the offset/length
- return payload[0];
+ return payload[offset];
}
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java Mon Jan 24 19:38:40 2011
@@ -20,7 +20,7 @@ package org.apache.lucene.search.spans;
import java.io.IOException;
import java.util.Collection;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.Weight;
import org.apache.lucene.search.Similarity;
@@ -82,7 +82,7 @@ final class JustCompileSearchSpans {
}
@Override
- public Spans getSpans(IndexReader reader) throws IOException {
+ public Spans getSpans(AtomicReaderContext context) throws IOException {
throw new UnsupportedOperationException(UNSUPPORTED_MSG);
}
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java Mon Jan 24 19:38:40 2011
@@ -30,7 +30,6 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Payload;
import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@ -176,6 +175,27 @@ public class TestBasics extends LuceneTe
QueryUtils.check(term2);
QueryUtils.checkUnequal(term1,term2);
}
+
+ public void testSpanTermQuery() throws Exception {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "seventy"));
+ checkHits(term1, new int[]
+ { 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 570, 571, 572,
+ 573, 574, 575, 576, 577, 578, 579, 670, 671, 672, 673, 674, 675, 676,
+ 677, 678, 679, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 870,
+ 871, 872, 873, 874, 875, 876, 877, 878, 879, 970, 971, 972, 973, 974,
+ 975, 976, 977, 978, 979, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
+ 1077, 1078, 1079, 1170, 1270, 1370, 1470, 1570, 1670, 1770, 1870, 1970,
+ 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1271, 1272, 1273,
+ 1274, 1275, 1276, 1277, 1278, 1279, 1371, 1372, 1373, 1374, 1375, 1376,
+ 1377, 1378, 1379, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479,
+ 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1671, 1672, 1673,
+ 1674, 1675, 1676, 1677, 1678, 1679, 1771, 1772, 1773, 1774, 1775, 1776,
+ 1777, 1778, 1779, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879,
+ 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979 });
+ }
@Test
public void testSpanNearUnordered() throws Exception {
@@ -522,8 +542,8 @@ public class TestBasics extends LuceneTe
public void testSpansSkipTo() throws Exception {
SpanTermQuery t1 = new SpanTermQuery(new Term("field", "seventy"));
SpanTermQuery t2 = new SpanTermQuery(new Term("field", "seventy"));
- Spans s1 = t1.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
- Spans s2 = t2.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
+ Spans s1 = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), t1);
+ Spans s2 = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), t2);
assertTrue(s1.next());
assertTrue(s2.next());
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java Mon Jan 24 19:38:40 2011
@@ -24,7 +24,6 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.CheckHits;
import org.apache.lucene.search.IndexSearcher;
@@ -254,7 +253,7 @@ public class TestFieldMaskingSpanQuery e
SpanQuery q = new SpanOrQuery(q1, new FieldMaskingSpanQuery(q2, "gender"));
check(q, new int[] { 0, 1, 2, 3, 4 });
- Spans span = q.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.next());
assertEquals(s(0,0,1), s(span));
@@ -295,8 +294,8 @@ public class TestFieldMaskingSpanQuery e
check(qA, new int[] { 0, 1, 2, 4 });
check(qB, new int[] { 0, 1, 2, 4 });
- Spans spanA = qA.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
- Spans spanB = qB.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
+ Spans spanA = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), qA);
+ Spans spanB = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), qB);
while (spanA.next()) {
assertTrue("spanB not still going", spanB.next());
@@ -316,7 +315,7 @@ public class TestFieldMaskingSpanQuery e
new FieldMaskingSpanQuery(qB, "id") }, -1, false );
check(q, new int[] { 0, 1, 2, 3 });
- Spans span = q.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.next());
assertEquals(s(0,0,1), s(span));
Modified: lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java?rev=1062944&r1=1062943&r2=1062944&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (original)
+++ lucene/dev/branches/realtime_search/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java Mon Jan 24 19:38:40 2011
@@ -22,7 +22,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
-import org.apache.lucene.index.SlowMultiReaderWrapper;
+import org.apache.lucene.index.IndexReader.ReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
@@ -34,6 +34,7 @@ import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Weight.ScorerContext;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.ReaderUtil;
public class TestNearSpansOrdered extends LuceneTestCase {
protected IndexSearcher searcher;
@@ -62,7 +63,7 @@ public class TestNearSpansOrdered extend
doc.add(newField(FIELD, docFields[i], Field.Store.NO, Field.Index.ANALYZED));
writer.addDocument(doc);
}
- reader = new SlowMultiReaderWrapper(writer.getReader());
+ reader = writer.getReader();
writer.close();
searcher = new IndexSearcher(reader);
}
@@ -102,7 +103,7 @@ public class TestNearSpansOrdered extend
public void testNearSpansNext() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.next());
assertEquals(s(0,0,3), s(span));
assertEquals(true, span.next());
@@ -117,7 +118,7 @@ public class TestNearSpansOrdered extend
*/
public void testNearSpansSkipToLikeNext() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.skipTo(0));
assertEquals(s(0,0,3), s(span));
assertEquals(true, span.skipTo(1));
@@ -127,7 +128,7 @@ public class TestNearSpansOrdered extend
public void testNearSpansNextThenSkipTo() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.next());
assertEquals(s(0,0,3), s(span));
assertEquals(true, span.skipTo(1));
@@ -137,7 +138,7 @@ public class TestNearSpansOrdered extend
public void testNearSpansNextThenSkipPast() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.next());
assertEquals(s(0,0,3), s(span));
assertEquals(false, span.skipTo(2));
@@ -145,20 +146,20 @@ public class TestNearSpansOrdered extend
public void testNearSpansSkipPast() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(false, span.skipTo(2));
}
public void testNearSpansSkipTo0() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.skipTo(0));
assertEquals(s(0,0,3), s(span));
}
public void testNearSpansSkipTo1() throws Exception {
SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), q);
assertEquals(true, span.skipTo(1));
assertEquals(s(1,0,4), s(span));
}
@@ -170,8 +171,9 @@ public class TestNearSpansOrdered extend
public void testSpanNearScorerSkipTo1() throws Exception {
SpanNearQuery q = makeQuery();
Weight w = q.weight(searcher);
- assertTrue(searcher.getTopReaderContext().isAtomic);
- Scorer s = w.scorer((AtomicReaderContext) searcher.getTopReaderContext(), ScorerContext.def());
+ ReaderContext topReaderContext = searcher.getTopReaderContext();
+ AtomicReaderContext[] leaves = ReaderUtil.leaves(topReaderContext);
+ Scorer s = w.scorer(leaves[0], ScorerContext.def());
assertEquals(1, s.advance(1));
}
/**
@@ -180,8 +182,10 @@ public class TestNearSpansOrdered extend
*/
public void testSpanNearScorerExplain() throws Exception {
SpanNearQuery q = makeQuery();
- assertTrue(searcher.getTopReaderContext().isAtomic);
- Explanation e = q.weight(searcher).explain((AtomicReaderContext) searcher.getTopReaderContext(), 1);
+ ReaderContext topReaderContext = searcher.getTopReaderContext();
+ AtomicReaderContext[] leaves = ReaderUtil.leaves(topReaderContext);
+
+ Explanation e = q.weight(searcher).explain(leaves[0], 1);
assertTrue("Scorer explanation value for doc#1 isn't positive: "
+ e.toString(),
0.0f < e.getValue());