You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cm...@apache.org on 2013/08/11 14:19:39 UTC
svn commit: r1512909 [14/38] - in /lucene/dev/branches/lucene4956: ./
dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/libraries/
dev-tools/idea/lucene/suggest/ dev-tools/idea/solr/contrib/dataimporthandler/
dev-tools/idea/solr/core/src/test/ dev-too...
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSort.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSort.java Sun Aug 11 12:19:13 2013
@@ -24,7 +24,11 @@ import java.util.List;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
+import org.apache.lucene.document.DoubleField;
import org.apache.lucene.document.Field;
+import org.apache.lucene.document.FloatField;
+import org.apache.lucene.document.IntField;
+import org.apache.lucene.document.LongField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
@@ -329,259 +333,19 @@ public class TestSort extends LuceneTest
ir.close();
dir.close();
}
-
- /** Tests sorting on type byte */
- public void testByte() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(newStringField("value", "23", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.BYTE));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // numeric order
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("23", searcher.doc(td.scoreDocs[2].doc).get("value"));
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type byte with a missing value */
- public void testByteMissing() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.BYTE));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // null value is treated as a 0
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertNull(searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type byte, specifying the missing value should be treated as Byte.MAX_VALUE */
- public void testByteMissingLast() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- SortField sortField = new SortField("value", SortField.Type.BYTE);
- sortField.setMissingValue(Byte.MAX_VALUE);
- Sort sort = new Sort(sortField);
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // null value is treated Byte.MAX_VALUE
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertNull(searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type byte in reverse */
- public void testByteReverse() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(newStringField("value", "23", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.BYTE, true));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // reverse numeric order
- assertEquals("23", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type short */
- public void testShort() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(newStringField("value", "300", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.SHORT));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // numeric order
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("300", searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type short with a missing value */
- public void testShortMissing() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.SHORT));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // null is treated as a 0
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertNull(searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type short, specifying the missing value should be treated as Short.MAX_VALUE */
- public void testShortMissingLast() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- SortField sortField = new SortField("value", SortField.Type.SHORT);
- sortField.setMissingValue(Short.MAX_VALUE);
- Sort sort = new Sort(sortField);
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // null is treated as Short.MAX_VALUE
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertNull(searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type short in reverse */
- public void testShortReverse() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(newStringField("value", "300", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.SHORT, true));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // reverse numeric order
- assertEquals("300", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).get("value"));
-
- ir.close();
- dir.close();
- }
-
/** Tests sorting on type int */
public void testInt() throws IOException {
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "300000", Field.Store.YES));
+ doc.add(new IntField("value", 300000, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new IntField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new IntField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -607,10 +371,10 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new IntField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new IntField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -636,10 +400,10 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new IntField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new IntField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -665,13 +429,13 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "300000", Field.Store.YES));
+ doc.add(new IntField("value", 300000, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new IntField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new IntField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -695,13 +459,13 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "3000000000", Field.Store.YES));
+ doc.add(new LongField("value", 3000000000L, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new LongField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new LongField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -727,10 +491,10 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new LongField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new LongField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -756,10 +520,10 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new LongField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new LongField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -785,13 +549,13 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "3000000000", Field.Store.YES));
+ doc.add(new LongField("value", 3000000000L, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1", Field.Store.YES));
+ doc.add(new LongField("value", -1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4", Field.Store.YES));
+ doc.add(new LongField("value", 4, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -815,13 +579,13 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "30.1", Field.Store.YES));
+ doc.add(new FloatField("value", 30.1f, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new FloatField("value", -1.3f, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2", Field.Store.YES));
+ doc.add(new FloatField("value", 4.2f, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -847,10 +611,10 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new FloatField("value", -1.3f, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2", Field.Store.YES));
+ doc.add(new FloatField("value", 4.2f, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -876,10 +640,10 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new FloatField("value", -1.3f, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2", Field.Store.YES));
+ doc.add(new FloatField("value", 4.2f, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -905,13 +669,13 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "30.1", Field.Store.YES));
+ doc.add(new FloatField("value", 30.1f, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new FloatField("value", -1.3f, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2", Field.Store.YES));
+ doc.add(new FloatField("value", 4.2f, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -935,16 +699,16 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "30.1", Field.Store.YES));
+ doc.add(new DoubleField("value", 30.1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new DoubleField("value", -1.3, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333333, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333332, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -969,10 +733,10 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "+0", Field.Store.YES));
+ doc.add(new DoubleField("value", +0d, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-0", Field.Store.YES));
+ doc.add(new DoubleField("value", -0d, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
IndexReader ir = writer.getReader();
@@ -984,8 +748,13 @@ public class TestSort extends LuceneTest
TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
assertEquals(2, td.totalHits);
// numeric order
- assertEquals("-0", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("+0", searcher.doc(td.scoreDocs[1].doc).get("value"));
+ double v0 = searcher.doc(td.scoreDocs[0].doc).getField("value").numericValue().doubleValue();
+ double v1 = searcher.doc(td.scoreDocs[1].doc).getField("value").numericValue().doubleValue();
+ assertEquals(0, v0, 0d);
+ assertEquals(0, v1, 0d);
+ // check sign bits
+ assertEquals(1, Double.doubleToLongBits(v0) >>> 63);
+ assertEquals(0, Double.doubleToLongBits(v1) >>> 63);
ir.close();
dir.close();
@@ -998,13 +767,13 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new DoubleField("value", -1.3, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333333, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333332, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -1031,13 +800,13 @@ public class TestSort extends LuceneTest
Document doc = new Document();
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new DoubleField("value", -1.3, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333333, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333332, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -1064,16 +833,16 @@ public class TestSort extends LuceneTest
Directory dir = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
Document doc = new Document();
- doc.add(newStringField("value", "30.1", Field.Store.YES));
+ doc.add(new DoubleField("value", 30.1, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "-1.3", Field.Store.YES));
+ doc.add(new DoubleField("value", -1.3, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333333, Field.Store.YES));
writer.addDocument(doc);
doc = new Document();
- doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
+ doc.add(new DoubleField("value", 4.2333333333332, Field.Store.YES));
writer.addDocument(doc);
IndexReader ir = writer.getReader();
writer.close();
@@ -1150,7 +919,7 @@ public class TestSort extends LuceneTest
for(int seg=0;seg<2;seg++) {
for(int docIDX=0;docIDX<10;docIDX++) {
Document doc = new Document();
- doc.add(newStringField("id", ""+docIDX, Field.Store.YES));
+ doc.add(new IntField("id", docIDX, Field.Store.YES));
StringBuilder sb = new StringBuilder();
for(int i=0;i<id;i++) {
sb.append(' ');
@@ -1251,94 +1020,6 @@ public class TestSort extends LuceneTest
}
/**
- * test sorts for a custom byte parser that uses a simple char encoding
- */
- public void testCustomByteParser() throws Exception {
- List<String> letters = Arrays.asList(new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" });
- Collections.shuffle(letters, random());
-
- Directory dir = newDirectory();
- RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
- for (String letter : letters) {
- Document doc = new Document();
- doc.add(newStringField("parser", letter, Field.Store.YES));
- iw.addDocument(doc);
- }
-
- IndexReader ir = iw.getReader();
- iw.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("parser", new FieldCache.ByteParser() {
- @Override
- public byte parseByte(BytesRef term) {
- return (byte) (term.bytes[term.offset]-'A');
- }
-
- @Override
- public TermsEnum termsEnum(Terms terms) throws IOException {
- return terms.iterator(null);
- }
- }), SortField.FIELD_DOC );
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
-
- // results should be in alphabetical order
- assertEquals(10, td.totalHits);
- Collections.sort(letters);
- for (int i = 0; i < letters.size(); i++) {
- assertEquals(letters.get(i), searcher.doc(td.scoreDocs[i].doc).get("parser"));
- }
-
- ir.close();
- dir.close();
- }
-
- /**
- * test sorts for a custom short parser that uses a simple char encoding
- */
- public void testCustomShortParser() throws Exception {
- List<String> letters = Arrays.asList(new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" });
- Collections.shuffle(letters, random());
-
- Directory dir = newDirectory();
- RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
- for (String letter : letters) {
- Document doc = new Document();
- doc.add(newStringField("parser", letter, Field.Store.YES));
- iw.addDocument(doc);
- }
-
- IndexReader ir = iw.getReader();
- iw.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("parser", new FieldCache.ShortParser() {
- @Override
- public short parseShort(BytesRef term) {
- return (short) (term.bytes[term.offset]-'A');
- }
-
- @Override
- public TermsEnum termsEnum(Terms terms) throws IOException {
- return terms.iterator(null);
- }
- }), SortField.FIELD_DOC );
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
-
- // results should be in alphabetical order
- assertEquals(10, td.totalHits);
- Collections.sort(letters);
- for (int i = 0; i < letters.size(); i++) {
- assertEquals(letters.get(i), searcher.doc(td.scoreDocs[i].doc).get("parser"));
- }
-
- ir.close();
- dir.close();
- }
-
- /**
* test sorts for a custom long parser that uses a simple char encoding
*/
public void testCustomLongParser() throws Exception {
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java Sun Aug 11 12:19:13 2013
@@ -223,142 +223,6 @@ public class TestSortDocValues extends L
dir.close();
}
- /** Tests sorting on type byte */
- public void testByte() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(new NumericDocValuesField("value", 23));
- doc.add(newStringField("value", "23", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", -1));
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", 4));
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.BYTE));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // numeric order
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("23", searcher.doc(td.scoreDocs[2].doc).get("value"));
- assertNoFieldCaches();
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type byte in reverse */
- public void testByteReverse() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(new NumericDocValuesField("value", 23));
- doc.add(newStringField("value", "23", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", -1));
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", 4));
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.BYTE, true));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // reverse numeric order
- assertEquals("23", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).get("value"));
- assertNoFieldCaches();
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type short */
- public void testShort() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(new NumericDocValuesField("value", 300));
- doc.add(newStringField("value", "300", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", -1));
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", 4));
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.SHORT));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // numeric order
- assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("300", searcher.doc(td.scoreDocs[2].doc).get("value"));
- assertNoFieldCaches();
-
- ir.close();
- dir.close();
- }
-
- /** Tests sorting on type short in reverse */
- public void testShortReverse() throws IOException {
- Directory dir = newDirectory();
- RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
- Document doc = new Document();
- doc.add(new NumericDocValuesField("value", 300));
- doc.add(newStringField("value", "300", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", -1));
- doc.add(newStringField("value", "-1", Field.Store.YES));
- writer.addDocument(doc);
- doc = new Document();
- doc.add(new NumericDocValuesField("value", 4));
- doc.add(newStringField("value", "4", Field.Store.YES));
- writer.addDocument(doc);
- IndexReader ir = writer.getReader();
- writer.close();
-
- IndexSearcher searcher = newSearcher(ir);
- Sort sort = new Sort(new SortField("value", SortField.Type.SHORT, true));
-
- TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
- assertEquals(3, td.totalHits);
- // reverse numeric order
- assertEquals("300", searcher.doc(td.scoreDocs[0].doc).get("value"));
- assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
- assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).get("value"));
- assertNoFieldCaches();
-
- ir.close();
- dir.close();
- }
-
/** Tests sorting on type int */
public void testInt() throws IOException {
Directory dir = newDirectory();
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java Sun Aug 11 12:19:13 2013
@@ -50,7 +50,7 @@ public class TestTermVectors extends Luc
public static void beforeClass() throws Exception {
directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random(), directory, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random(), MockTokenizer.SIMPLE, true)).setMergePolicy(newLogMergePolicy()));
- //writer.setUseCompoundFile(true);
+ //writer.setNoCFSRatio(1.0);
//writer.infoStream = System.out;
for (int i = 0; i < 1000; i++) {
Document doc = new Document();
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java Sun Aug 11 12:19:13 2013
@@ -148,7 +148,7 @@ final class JustCompileSearchSpans {
static final class JustCompileSpanScorer extends SpanScorer {
protected JustCompileSpanScorer(Spans spans, Weight weight,
- Similarity.SloppySimScorer docScorer) throws IOException {
+ Similarity.SimScorer docScorer) throws IOException {
super(spans, weight, docScorer);
}
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java Sun Aug 11 12:19:13 2013
@@ -60,7 +60,7 @@ public class MultiSpansWrapper extends S
TreeSet<Term> terms = new TreeSet<Term>();
query.extractTerms(terms);
for (Term term : terms) {
- termContexts.put(term, TermContext.build(topLevelReaderContext, term, true));
+ termContexts.put(term, TermContext.build(topLevelReaderContext, term));
}
final List<AtomicReaderContext> leaves = topLevelReaderContext.leaves();
if(leaves.size() == 1) {
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java Sun Aug 11 12:19:13 2013
@@ -364,6 +364,77 @@ public class TestBasics extends LuceneTe
}
@Test
+ public void testSpanNotWindowOne() throws Exception {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "forty"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[] {term1, term2},
+ 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "one"));
+ SpanNotQuery query = new SpanNotQuery(near, term3, 1, 1);
+
+ checkHits(query, new int[]
+ {840, 842, 843, 844, 845, 846, 847, 848, 849,
+ 1840, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849});
+
+ assertTrue(searcher.explain(query, 840).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 1842).getValue() > 0.0f);
+ }
+
+ @Test
+ public void testSpanNotWindowTwoBefore() throws Exception {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "forty"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[] {term1, term2},
+ 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "one"));
+ SpanNotQuery query = new SpanNotQuery(near, term3, 2, 0);
+
+ checkHits(query, new int[]
+ {840, 841, 842, 843, 844, 845, 846, 847, 848, 849});
+
+ assertTrue(searcher.explain(query, 840).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 849).getValue() > 0.0f);
+ }
+
+ @Test
+ public void testSpanNotWindowNeg() throws Exception {
+ //test handling of invalid window < 0
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "one"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[] {term1, term2},
+ 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "forty"));
+
+ SpanOrQuery or = new SpanOrQuery(term3);
+
+ SpanNotQuery query = new SpanNotQuery(near, or);
+
+ checkHits(query, new int[]
+ {801, 821, 831, 851, 861, 871, 881, 891,
+ 1801, 1821, 1831, 1851, 1861, 1871, 1881, 1891});
+
+ assertTrue(searcher.explain(query, 801).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 891).getValue() > 0.0f);
+ }
+
+ @Test
+ public void testSpanNotWindowDoubleExcludesBefore() throws Exception {
+ //test hitting two excludes before an include
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "forty"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "two"));
+ SpanNearQuery near = new SpanNearQuery(new SpanTermQuery[]{term1, term2}, 2, true);
+ SpanTermQuery exclude = new SpanTermQuery(new Term("field", "one"));
+
+ SpanNotQuery query = new SpanNotQuery(near, exclude, 4, 1);
+
+ checkHits(query, new int[]
+ {42, 242, 342, 442, 542, 642, 742, 842, 942});
+
+ assertTrue(searcher.explain(query, 242).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 942).getValue() > 0.0f);
+ }
+
+ @Test
public void testSpanFirst() throws Exception {
SpanTermQuery term1 = new SpanTermQuery(new Term("field", "five"));
SpanFirstQuery query = new SpanFirstQuery(term1, 1);
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java Sun Aug 11 12:19:13 2013
@@ -379,11 +379,11 @@ public class TestPayloadSpans extends Lu
PayloadSpanUtil psu = new PayloadSpanUtil(searcher.getTopReaderContext());
Collection<byte[]> payloads = psu.getPayloadsForQuery(new TermQuery(new Term(PayloadHelper.FIELD, "rr")));
- if(VERBOSE)
+ if(VERBOSE) {
System.out.println("Num payloads:" + payloads.size());
- for (final byte [] bytes : payloads) {
- if(VERBOSE)
+ for (final byte [] bytes : payloads) {
System.out.println(new String(bytes, "UTF-8"));
+ }
}
reader.close();
directory.close();
@@ -451,12 +451,12 @@ public class TestPayloadSpans extends Lu
System.out.println("\nSpans Dump --");
if (spans.isPayloadAvailable()) {
Collection<byte[]> payload = spans.getPayload();
- if(VERBOSE)
+ if(VERBOSE) {
System.out.println("payloads for span:" + payload.size());
- for (final byte [] bytes : payload) {
- if(VERBOSE)
+ for (final byte [] bytes : payload) {
System.out.println("doc:" + spans.doc() + " s:" + spans.start() + " e:" + spans.end() + " "
+ new String(bytes, "UTF-8"));
+ }
}
assertEquals(numPayloads[cnt],payload.size());
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java Sun Aug 11 12:19:13 2013
@@ -84,7 +84,8 @@ public class TestSpans extends LuceneTes
"u2 xx u1 u2",
"u2 u1 xx u2",
"u1 u2 xx u2",
- "t1 t2 t1 t3 t2 t3"
+ "t1 t2 t1 t3 t2 t3",
+ "s2 s1 s1 xx xx s2 xx s2 xx s1 xx xx xx xx xx s2 xx"
};
public SpanTermQuery makeSpanTermQuery(String text) {
@@ -502,4 +503,52 @@ public class TestSpans extends LuceneTes
reader.close();
dir.close();
}
+
+
+ public void testSpanNots() throws Throwable{
+ assertEquals("SpanNotIncludeExcludeSame1", 0, spanCount("s2", "s2", 0, 0), 0);
+ assertEquals("SpanNotIncludeExcludeSame2", 0, spanCount("s2", "s2", 10, 10), 0);
+
+ //focus on behind
+ assertEquals("SpanNotS2NotS1_6_0", 1, spanCount("s2", "s1", 6, 0));
+ assertEquals("SpanNotS2NotS1_5_0", 2, spanCount("s2", "s1", 5, 0));
+ assertEquals("SpanNotS2NotS1_3_0", 3, spanCount("s2", "s1", 3, 0));
+ assertEquals("SpanNotS2NotS1_2_0", 4, spanCount("s2", "s1", 2, 0));
+ assertEquals("SpanNotS2NotS1_0_0", 4, spanCount("s2", "s1", 0, 0));
+
+ //focus on both
+ assertEquals("SpanNotS2NotS1_3_1", 2, spanCount("s2", "s1", 3, 1));
+ assertEquals("SpanNotS2NotS1_2_1", 3, spanCount("s2", "s1", 2, 1));
+ assertEquals("SpanNotS2NotS1_1_1", 3, spanCount("s2", "s1", 1, 1));
+ assertEquals("SpanNotS2NotS1_10_10", 0, spanCount("s2", "s1", 10, 10));
+
+ //focus on ahead
+ assertEquals("SpanNotS1NotS2_10_10", 0, spanCount("s1", "s2", 10, 10));
+ assertEquals("SpanNotS1NotS2_0_1", 3, spanCount("s1", "s2", 0, 1));
+ assertEquals("SpanNotS1NotS2_0_2", 3, spanCount("s1", "s2", 0, 2));
+ assertEquals("SpanNotS1NotS2_0_3", 2, spanCount("s1", "s2", 0, 3));
+ assertEquals("SpanNotS1NotS2_0_4", 1, spanCount("s1", "s2", 0, 4));
+ assertEquals("SpanNotS1NotS2_0_8", 0, spanCount("s1", "s2", 0, 8));
+
+ //exclude doesn't exist
+ assertEquals("SpanNotS1NotS3_8_8", 3, spanCount("s1", "s3", 8, 8));
+
+ //include doesn't exist
+ assertEquals("SpanNotS3NotS1_8_8", 0, spanCount("s3", "s1", 8, 8));
+
+ }
+
+ private int spanCount(String include, String exclude, int pre, int post) throws IOException{
+ SpanTermQuery iq = new SpanTermQuery(new Term(field, include));
+ SpanTermQuery eq = new SpanTermQuery(new Term(field, exclude));
+ SpanNotQuery snq = new SpanNotQuery(iq, eq, pre, post);
+ Spans spans = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), snq);
+
+ int i = 0;
+ while (spans.next()){
+ i++;
+ }
+ return i;
+ }
+
}
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java Sun Aug 11 12:19:13 2013
@@ -20,6 +20,7 @@ package org.apache.lucene.store;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.nio.file.NoSuchFileException;
import java.util.Arrays;
import org.apache.lucene.store.MockDirectoryWrapper.Throttling;
@@ -98,7 +99,7 @@ public class TestDirectory extends Lucen
try {
IndexInput input = dir.openInput(file, newIOContext(random()));
input.close();
- } catch (FileNotFoundException e) {
+ } catch (FileNotFoundException | NoSuchFileException e) {
// ignore
} catch (IOException e) {
if (e.getMessage().contains("still open for writing")) {
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java Sun Aug 11 12:19:13 2013
@@ -54,7 +54,7 @@ public class TestFileSwitchDirectory ext
IndexWriter writer = new IndexWriter(
fsd,
new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).
- setMergePolicy(newLogMergePolicy(false)).setCodec(Codec.forName("Lucene40"))
+ setMergePolicy(newLogMergePolicy(false)).setCodec(Codec.forName("Lucene40")).setUseCompoundFile(false)
);
TestIndexWriterReader.createIndexNoClose(true, "ram", writer);
IndexReader reader = DirectoryReader.open(writer, true);
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java Sun Aug 11 12:19:13 2013
@@ -16,21 +16,25 @@ package org.apache.lucene.util;
* limitations under the License.
*/
+import java.io.IOException;
+
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
+import org.apache.lucene.document.DoubleField;
import org.apache.lucene.document.Field;
-import org.apache.lucene.search.FieldCache;
+import org.apache.lucene.document.FloatField;
+import org.apache.lucene.document.IntField;
+import org.apache.lucene.document.LongField;
import org.apache.lucene.index.AtomicReader;
import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.MultiReader;
import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.MultiReader;
import org.apache.lucene.index.SlowCompositeReaderWrapper;
+import org.apache.lucene.search.FieldCache;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
import org.apache.lucene.util.FieldCacheSanityChecker.InsanityType;
-import java.io.IOException;
-
public class TestFieldCacheSanityChecker extends LuceneTestCase {
protected AtomicReader readerA;
@@ -51,18 +55,14 @@ public class TestFieldCacheSanityChecker
long theLong = Long.MAX_VALUE;
double theDouble = Double.MAX_VALUE;
- byte theByte = Byte.MAX_VALUE;
- short theShort = Short.MAX_VALUE;
int theInt = Integer.MAX_VALUE;
float theFloat = Float.MAX_VALUE;
for (int i = 0; i < NUM_DOCS; i++){
Document doc = new Document();
- doc.add(newStringField("theLong", String.valueOf(theLong--), Field.Store.NO));
- doc.add(newStringField("theDouble", String.valueOf(theDouble--), Field.Store.NO));
- doc.add(newStringField("theByte", String.valueOf(theByte--), Field.Store.NO));
- doc.add(newStringField("theShort", String.valueOf(theShort--), Field.Store.NO));
- doc.add(newStringField("theInt", String.valueOf(theInt--), Field.Store.NO));
- doc.add(newStringField("theFloat", String.valueOf(theFloat--), Field.Store.NO));
+ doc.add(new LongField("theLong", theLong--, Field.Store.NO));
+ doc.add(new DoubleField("theDouble", theDouble--, Field.Store.NO));
+ doc.add(new IntField("theInt", theInt--, Field.Store.NO));
+ doc.add(new FloatField("theFloat", theFloat--, Field.Store.NO));
if (0 == i % 3) {
wA.addDocument(doc);
} else {
@@ -95,12 +95,12 @@ public class TestFieldCacheSanityChecker
cache.purgeAllCaches();
cache.getDoubles(readerA, "theDouble", false);
- cache.getDoubles(readerA, "theDouble", FieldCache.DEFAULT_DOUBLE_PARSER, false);
- cache.getDoubles(readerAclone, "theDouble", FieldCache.DEFAULT_DOUBLE_PARSER, false);
- cache.getDoubles(readerB, "theDouble", FieldCache.DEFAULT_DOUBLE_PARSER, false);
+ cache.getDoubles(readerA, "theDouble", FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, false);
+ cache.getDoubles(readerAclone, "theDouble", FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, false);
+ cache.getDoubles(readerB, "theDouble", FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, false);
cache.getInts(readerX, "theInt", false);
- cache.getInts(readerX, "theInt", FieldCache.DEFAULT_INT_PARSER, false);
+ cache.getInts(readerX, "theInt", FieldCache.NUMERIC_UTILS_INT_PARSER, false);
// // //
@@ -119,9 +119,8 @@ public class TestFieldCacheSanityChecker
FieldCache cache = FieldCache.DEFAULT;
cache.purgeAllCaches();
- cache.getInts(readerX, "theInt", FieldCache.DEFAULT_INT_PARSER, false);
+ cache.getInts(readerX, "theInt", FieldCache.NUMERIC_UTILS_INT_PARSER, false);
cache.getTerms(readerX, "theInt");
- cache.getBytes(readerX, "theByte", false);
// // //
@@ -147,8 +146,6 @@ public class TestFieldCacheSanityChecker
cache.getTerms(readerB, "theInt");
cache.getTerms(readerX, "theInt");
- cache.getBytes(readerX, "theByte", false);
-
// // //
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestFixedBitSet.java Sun Aug 11 12:19:13 2013
@@ -22,7 +22,16 @@ import java.util.BitSet;
import org.apache.lucene.search.DocIdSetIterator;
-public class TestFixedBitSet extends LuceneTestCase {
+public class TestFixedBitSet extends BaseDocIdSetTestCase<FixedBitSet> {
+
+ @Override
+ public FixedBitSet copyOf(BitSet bs, int length) throws IOException {
+ final FixedBitSet set = new FixedBitSet(length);
+ for (int doc = bs.nextSetBit(0); doc != -1; doc = bs.nextSetBit(doc + 1)) {
+ set.set(doc);
+ }
+ return set;
+ }
void doGet(BitSet a, FixedBitSet b) {
int max = b.length();
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestOpenBitSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestOpenBitSet.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestOpenBitSet.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/TestOpenBitSet.java Sun Aug 11 12:19:13 2013
@@ -17,11 +17,21 @@
package org.apache.lucene.util;
+import java.io.IOException;
import java.util.BitSet;
import org.apache.lucene.search.DocIdSetIterator;
-public class TestOpenBitSet extends LuceneTestCase {
+public class TestOpenBitSet extends BaseDocIdSetTestCase<OpenBitSet> {
+
+ @Override
+ public OpenBitSet copyOf(BitSet bs, int length) throws IOException {
+ final OpenBitSet set = new OpenBitSet(length);
+ for (int doc = bs.nextSetBit(0); doc != -1; doc = bs.nextSetBit(doc + 1)) {
+ set.set(doc);
+ }
+ return set;
+ }
void doGet(BitSet a, OpenBitSet b) {
int max = a.size();
@@ -320,6 +330,7 @@ public class TestOpenBitSet extends Luce
checkPrevSetBitArray(new int[] {0});
checkPrevSetBitArray(new int[] {0,2});
}
+
}
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/Test2BFST.java Sun Aug 11 12:19:13 2013
@@ -34,7 +34,7 @@ import org.apache.lucene.util.packed.Pac
import org.junit.Ignore;
import com.carrotsearch.randomizedtesting.annotations.TimeoutSuite;
-@Ignore("Requires tons of heap to run (10G works)")
+@Ignore("Requires tons of heap to run (420G works)")
@TimeoutSuite(millis = 100 * TimeUnits.HOUR)
public class Test2BFST extends LuceneTestCase {
@@ -50,12 +50,12 @@ public class Test2BFST extends LuceneTes
for(int doPackIter=0;doPackIter<2;doPackIter++) {
boolean doPack = doPackIter == 1;
- // Build FST w/ NoOutputs and stop when nodeCount > 3B
+ // Build FST w/ NoOutputs and stop when nodeCount > 2.2B
if (!doPack) {
System.out.println("\nTEST: 3B nodes; doPack=false output=NO_OUTPUTS");
Outputs<Object> outputs = NoOutputs.getSingleton();
Object NO_OUTPUT = outputs.getNoOutput();
- final Builder<Object> b = new Builder<Object>(FST.INPUT_TYPE.BYTE1, 0, 0, false, false, Integer.MAX_VALUE, outputs,
+ final Builder<Object> b = new Builder<Object>(FST.INPUT_TYPE.BYTE1, 0, 0, true, true, Integer.MAX_VALUE, outputs,
null, doPack, PackedInts.COMPACT, true, 15);
int count = 0;
@@ -72,7 +72,7 @@ public class Test2BFST extends LuceneTes
if (count % 100000 == 0) {
System.out.println(count + ": " + b.fstSizeInBytes() + " bytes; " + b.getTotStateCount() + " nodes");
}
- if (b.getTotStateCount() > LIMIT) {
+ if (b.getTotStateCount() > Integer.MAX_VALUE + 100L * 1024 * 1024) {
break;
}
nextInput(r, ints2);
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java Sun Aug 11 12:19:13 2013
@@ -126,7 +126,7 @@ public class TestFSTs extends LuceneTest
// FST ord pos int
{
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final List<FSTTester.InputOutput<Long>> pairs = new ArrayList<FSTTester.InputOutput<Long>>(terms2.length);
for(int idx=0;idx<terms2.length;idx++) {
pairs.add(new FSTTester.InputOutput<Long>(terms2[idx], (long) idx));
@@ -171,7 +171,7 @@ public class TestFSTs extends LuceneTest
// PositiveIntOutput (ord)
{
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final List<FSTTester.InputOutput<Long>> pairs = new ArrayList<FSTTester.InputOutput<Long>>(terms.length);
for(int idx=0;idx<terms.length;idx++) {
pairs.add(new FSTTester.InputOutput<Long>(terms[idx], (long) idx));
@@ -181,8 +181,7 @@ public class TestFSTs extends LuceneTest
// PositiveIntOutput (random monotonically increasing positive number)
{
- final boolean doShare = random().nextBoolean();
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(doShare);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final List<FSTTester.InputOutput<Long>> pairs = new ArrayList<FSTTester.InputOutput<Long>>(terms.length);
long lastOutput = 0;
for(int idx=0;idx<terms.length;idx++) {
@@ -190,12 +189,12 @@ public class TestFSTs extends LuceneTest
lastOutput = value;
pairs.add(new FSTTester.InputOutput<Long>(terms[idx], value));
}
- new FSTTester<Long>(random(), dir, inputMode, pairs, outputs, doShare).doTest(true);
+ new FSTTester<Long>(random(), dir, inputMode, pairs, outputs, true).doTest(true);
}
// PositiveIntOutput (random positive number)
{
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(random().nextBoolean());
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final List<FSTTester.InputOutput<Long>> pairs = new ArrayList<FSTTester.InputOutput<Long>>(terms.length);
for(int idx=0;idx<terms.length;idx++) {
pairs.add(new FSTTester.InputOutput<Long>(terms[idx], _TestUtil.nextLong(random(), 0, Long.MAX_VALUE)));
@@ -205,8 +204,8 @@ public class TestFSTs extends LuceneTest
// Pair<ord, (random monotonically increasing positive number>
{
- final PositiveIntOutputs o1 = PositiveIntOutputs.getSingleton(random().nextBoolean());
- final PositiveIntOutputs o2 = PositiveIntOutputs.getSingleton(random().nextBoolean());
+ final PositiveIntOutputs o1 = PositiveIntOutputs.getSingleton();
+ final PositiveIntOutputs o2 = PositiveIntOutputs.getSingleton();
final PairOutputs<Long,Long> outputs = new PairOutputs<Long,Long>(o1, o2);
final List<FSTTester.InputOutput<PairOutputs.Pair<Long,Long>>> pairs = new ArrayList<FSTTester.InputOutput<PairOutputs.Pair<Long,Long>>>(terms.length);
long lastOutput = 0;
@@ -306,7 +305,7 @@ public class TestFSTs extends LuceneTest
}
IndexReader r = DirectoryReader.open(writer, true);
writer.close();
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(random().nextBoolean());
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final boolean doRewrite = random().nextBoolean();
@@ -653,8 +652,8 @@ public class TestFSTs extends LuceneTest
if (storeOrds && storeDocFreqs) {
// Store both ord & docFreq:
- final PositiveIntOutputs o1 = PositiveIntOutputs.getSingleton(true);
- final PositiveIntOutputs o2 = PositiveIntOutputs.getSingleton(false);
+ final PositiveIntOutputs o1 = PositiveIntOutputs.getSingleton();
+ final PositiveIntOutputs o2 = PositiveIntOutputs.getSingleton();
final PairOutputs<Long,Long> outputs = new PairOutputs<Long,Long>(o1, o2);
new VisitTerms<PairOutputs.Pair<Long,Long>>(dirOut, wordsFileIn, inputMode, prune, outputs, doPack, noArcArrays) {
Random rand;
@@ -669,7 +668,7 @@ public class TestFSTs extends LuceneTest
}.run(limit, verify, false);
} else if (storeOrds) {
// Store only ords
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
new VisitTerms<Long>(dirOut, wordsFileIn, inputMode, prune, outputs, doPack, noArcArrays) {
@Override
public Long getOutput(IntsRef input, int ord) {
@@ -678,7 +677,7 @@ public class TestFSTs extends LuceneTest
}.run(limit, verify, true);
} else if (storeDocFreqs) {
// Store only docFreq
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(false);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
new VisitTerms<Long>(dirOut, wordsFileIn, inputMode, prune, outputs, doPack, noArcArrays) {
Random rand;
@Override
@@ -781,7 +780,7 @@ public class TestFSTs extends LuceneTest
// smaller FST if the outputs grow monotonically. But
// if numbers are "random", false should give smaller
// final size:
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
// Build an FST mapping BytesRef -> Long
final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs);
@@ -933,20 +932,15 @@ public class TestFSTs extends LuceneTest
}
}
- final boolean useCache = random().nextBoolean();
- if (VERBOSE) {
- System.out.println(" useCache=" + useCache);
- }
-
final TermsEnum.SeekStatus status;
if (nextID == null) {
- if (termsEnum.seekExact(new BytesRef(id), useCache)) {
+ if (termsEnum.seekExact(new BytesRef(id))) {
status = TermsEnum.SeekStatus.FOUND;
} else {
status = TermsEnum.SeekStatus.NOT_FOUND;
}
} else {
- status = termsEnum.seekCeil(new BytesRef(id), useCache);
+ status = termsEnum.seekCeil(new BytesRef(id));
}
if (nextID != null) {
@@ -1100,7 +1094,7 @@ public class TestFSTs extends LuceneTest
}
public void testFinalOutputOnEndState() throws Exception {
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE4, 2, 0, true, true, Integer.MAX_VALUE, outputs, null, random().nextBoolean(), PackedInts.DEFAULT, true, 15);
builder.add(Util.toUTF32("stat", new IntsRef()), 17L);
@@ -1115,7 +1109,7 @@ public class TestFSTs extends LuceneTest
}
public void testInternalFinalState() throws Exception {
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final boolean willRewrite = random().nextBoolean();
final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE1, 0, 0, true, true, Integer.MAX_VALUE, outputs, null, willRewrite, PackedInts.DEFAULT, true, 15);
builder.add(Util.toIntsRef(new BytesRef("stat"), new IntsRef()), outputs.getNoOutput());
@@ -1136,7 +1130,7 @@ public class TestFSTs extends LuceneTest
// Make sure raw FST can differentiate between final vs
// non-final end nodes
public void testNonFinalStopNode() throws Exception {
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final Long nothing = outputs.getNoOutput();
final Builder<Long> b = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs);
@@ -1216,7 +1210,7 @@ public class TestFSTs extends LuceneTest
};
public void testShortestPaths() throws Exception {
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs);
final IntsRef scratch = new IntsRef();
@@ -1258,8 +1252,8 @@ public class TestFSTs extends LuceneTest
public void testShortestPathsWFST() throws Exception {
PairOutputs<Long,Long> outputs = new PairOutputs<Long,Long>(
- PositiveIntOutputs.getSingleton(true), // weight
- PositiveIntOutputs.getSingleton(true) // output
+ PositiveIntOutputs.getSingleton(), // weight
+ PositiveIntOutputs.getSingleton() // output
);
final Builder<Pair<Long,Long>> builder = new Builder<Pair<Long,Long>>(FST.INPUT_TYPE.BYTE1, outputs);
@@ -1301,7 +1295,7 @@ public class TestFSTs extends LuceneTest
final TreeMap<String,Long> slowCompletor = new TreeMap<String,Long>();
final TreeSet<String> allPrefixes = new TreeSet<String>();
- final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true);
+ final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton();
final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs);
final IntsRef scratch = new IntsRef();
@@ -1416,8 +1410,8 @@ public class TestFSTs extends LuceneTest
final TreeSet<String> allPrefixes = new TreeSet<String>();
PairOutputs<Long,Long> outputs = new PairOutputs<Long,Long>(
- PositiveIntOutputs.getSingleton(true), // weight
- PositiveIntOutputs.getSingleton(true) // output
+ PositiveIntOutputs.getSingleton(), // weight
+ PositiveIntOutputs.getSingleton() // output
);
final Builder<Pair<Long,Long>> builder = new Builder<Pair<Long,Long>>(FST.INPUT_TYPE.BYTE1, outputs);
final IntsRef scratch = new IntsRef();
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestFailOnFieldCacheInsanity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestFailOnFieldCacheInsanity.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestFailOnFieldCacheInsanity.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/junitcompat/TestFailOnFieldCacheInsanity.java Sun Aug 11 12:19:13 2013
@@ -69,6 +69,7 @@ public class TestFailOnFieldCacheInsanit
for(Failure f : r.getFailures()) {
if (f.getMessage().indexOf("Insane") != -1) {
insane = true;
+ break;
}
}
Assert.assertTrue(insane);
Modified: lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java (original)
+++ lucene/dev/branches/lucene4956/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java Sun Aug 11 12:19:13 2013
@@ -540,6 +540,28 @@ public class TestPackedInts extends Luce
}
}
+ public void testPackedIntsNull() {
+ // must be > 10 for the bulk reads below
+ int size = _TestUtil.nextInt(random(), 11, 256);
+ Reader packedInts = new PackedInts.NullReader(size);
+ assertEquals(0, packedInts.get(_TestUtil.nextInt(random(), 0, size - 1)));
+ long[] arr = new long[size + 10];
+ int r;
+ Arrays.fill(arr, 1);
+ r = packedInts.get(0, arr, 0, size - 1);
+ assertEquals(size - 1, r);
+ for (r--; r >= 0; r--) {
+ assertEquals(0, arr[r]);
+ }
+ Arrays.fill(arr, 1);
+ r = packedInts.get(10, arr, 0, size + 10);
+ assertEquals(size - 10, r);
+ for (int i = 0; i < size - 10; i++) {
+ assertEquals(0, arr[i]);
+ }
+
+ }
+
public void testBulkGet() {
final int valueCount = 1111;
final int index = random().nextInt(valueCount);
@@ -650,13 +672,133 @@ public class TestPackedInts extends Luce
wrt.set(99, (1 << 23) - 1);
assertEquals(1 << 10, wrt.get(valueCount - 1));
wrt.set(1, Long.MAX_VALUE);
+ wrt.set(2, -3);
+ assertEquals(64, wrt.getBitsPerValue());
assertEquals(1 << 10, wrt.get(valueCount - 1));
assertEquals(Long.MAX_VALUE, wrt.get(1));
+ assertEquals(-3L, wrt.get(2));
assertEquals(2, wrt.get(4));
assertEquals((1 << 23) - 1, wrt.get(99));
assertEquals(10, wrt.get(7));
assertEquals(99, wrt.get(valueCount - 10));
assertEquals(1 << 10, wrt.get(valueCount - 1));
+ assertEquals(RamUsageEstimator.sizeOf(wrt), wrt.ramBytesUsed());
+ }
+
+ public void testPagedGrowableWriter() {
+ int pageSize = 1 << (_TestUtil.nextInt(random(), 6, 30));
+ // supports 0 values?
+ PagedGrowableWriter writer = new PagedGrowableWriter(0, pageSize, _TestUtil.nextInt(random(), 1, 64), random().nextFloat());
+ assertEquals(0, writer.size());
+
+ // compare against AppendingDeltaPackedLongBuffer
+ AppendingDeltaPackedLongBuffer buf = new AppendingDeltaPackedLongBuffer();
+ int size = random().nextInt(1000000);
+ long max = 5;
+ for (int i = 0; i < size; ++i) {
+ buf.add(_TestUtil.nextLong(random(), 0, max));
+ if (rarely()) {
+ max = PackedInts.maxValue(rarely() ? _TestUtil.nextInt(random(), 0, 63) : _TestUtil.nextInt(random(), 0, 31));
+ }
+ }
+ writer = new PagedGrowableWriter(size, pageSize, _TestUtil.nextInt(random(), 1, 64), random().nextFloat());
+ assertEquals(size, writer.size());
+ for (int i = size - 1; i >= 0; --i) {
+ writer.set(i, buf.get(i));
+ }
+ for (int i = 0; i < size; ++i) {
+ assertEquals(buf.get(i), writer.get(i));
+ }
+
+ // test ramBytesUsed
+ assertEquals(RamUsageEstimator.sizeOf(writer), writer.ramBytesUsed(), 8);
+
+ // test copy
+ PagedGrowableWriter copy = writer.resize(_TestUtil.nextLong(random(), writer.size() / 2, writer.size() * 3 / 2));
+ for (long i = 0; i < copy.size(); ++i) {
+ if (i < writer.size()) {
+ assertEquals(writer.get(i), copy.get(i));
+ } else {
+ assertEquals(0, copy.get(i));
+ }
+ }
+
+ // test grow
+ PagedGrowableWriter grow = writer.grow(_TestUtil.nextLong(random(), writer.size() / 2, writer.size() * 3 / 2));
+ for (long i = 0; i < grow.size(); ++i) {
+ if (i < writer.size()) {
+ assertEquals(writer.get(i), grow.get(i));
+ } else {
+ assertEquals(0, grow.get(i));
+ }
+ }
+ }
+
+ public void testPagedMutable() {
+ final int bitsPerValue = _TestUtil.nextInt(random(), 1, 64);
+ final long max = PackedInts.maxValue(bitsPerValue);
+ int pageSize = 1 << (_TestUtil.nextInt(random(), 6, 30));
+ // supports 0 values?
+ PagedMutable writer = new PagedMutable(0, pageSize, bitsPerValue, random().nextFloat() / 2);
+ assertEquals(0, writer.size());
+
+ // compare against AppendingDeltaPackedLongBuffer
+ AppendingDeltaPackedLongBuffer buf = new AppendingDeltaPackedLongBuffer();
+ int size = random().nextInt(1000000);
+
+ for (int i = 0; i < size; ++i) {
+ buf.add(bitsPerValue == 64 ? random().nextLong() : _TestUtil.nextLong(random(), 0, max));
+ }
+ writer = new PagedMutable(size, pageSize, bitsPerValue, random().nextFloat());
+ assertEquals(size, writer.size());
+ for (int i = size - 1; i >= 0; --i) {
+ writer.set(i, buf.get(i));
+ }
+ for (int i = 0; i < size; ++i) {
+ assertEquals(buf.get(i), writer.get(i));
+ }
+
+ // test ramBytesUsed
+ assertEquals(RamUsageEstimator.sizeOf(writer) - RamUsageEstimator.sizeOf(writer.format), writer.ramBytesUsed());
+
+ // test copy
+ PagedMutable copy = writer.resize(_TestUtil.nextLong(random(), writer.size() / 2, writer.size() * 3 / 2));
+ for (long i = 0; i < copy.size(); ++i) {
+ if (i < writer.size()) {
+ assertEquals(writer.get(i), copy.get(i));
+ } else {
+ assertEquals(0, copy.get(i));
+ }
+ }
+
+ // test grow
+ PagedMutable grow = writer.grow(_TestUtil.nextLong(random(), writer.size() / 2, writer.size() * 3 / 2));
+ for (long i = 0; i < grow.size(); ++i) {
+ if (i < writer.size()) {
+ assertEquals(writer.get(i), grow.get(i));
+ } else {
+ assertEquals(0, grow.get(i));
+ }
+ }
+ }
+
+ // memory hole
+ @Ignore
+ public void testPagedGrowableWriterOverflow() {
+ final long size = _TestUtil.nextLong(random(), 2 * (long) Integer.MAX_VALUE, 3 * (long) Integer.MAX_VALUE);
+ final int pageSize = 1 << (_TestUtil.nextInt(random(), 16, 30));
+ final PagedGrowableWriter writer = new PagedGrowableWriter(size, pageSize, 1, random().nextFloat());
+ final long index = _TestUtil.nextLong(random(), (long) Integer.MAX_VALUE, size - 1);
+ writer.set(index, 2);
+ assertEquals(2, writer.get(index));
+ for (int i = 0; i < 1000000; ++i) {
+ final long idx = _TestUtil.nextLong(random(), 0, size);
+ if (idx == index) {
+ assertEquals(2, writer.get(idx));
+ } else {
+ assertEquals(0, writer.get(idx));
+ }
+ }
}
public void testSave() throws IOException {
@@ -804,23 +946,46 @@ public class TestPackedInts extends Luce
return true;
}
+ enum DataType {
+ PACKED,
+ DELTA_PACKED,
+ MONOTONIC
+ }
+
+
public void testAppendingLongBuffer() {
+
final long[] arr = new long[RandomInts.randomIntBetween(random(), 1, 1000000)];
- for (int bpv : new int[] {0, 1, 63, 64, RandomInts.randomIntBetween(random(), 2, 62)}) {
- for (boolean monotonic : new boolean[] {true, false}) {
+ float[] ratioOptions = new float[]{PackedInts.DEFAULT, PackedInts.COMPACT, PackedInts.FAST};
+ for (int bpv : new int[]{0, 1, 63, 64, RandomInts.randomIntBetween(random(), 2, 62)}) {
+ for (DataType dataType : DataType.values()) {
+ final int pageSize = 1 << _TestUtil.nextInt(random(), 6, 20);
+ final int initialPageCount = _TestUtil.nextInt(random(), 0, 16);
+ float acceptableOverheadRatio = ratioOptions[_TestUtil.nextInt(random(), 0, ratioOptions.length - 1)];
AbstractAppendingLongBuffer buf;
final int inc;
- if (monotonic) {
- buf = new MonotonicAppendingLongBuffer();
- inc = _TestUtil.nextInt(random(), -1000, 1000);
- } else {
- buf = new AppendingLongBuffer();
- inc = 0;
+ switch (dataType) {
+ case PACKED:
+ buf = new AppendingPackedLongBuffer(initialPageCount, pageSize, acceptableOverheadRatio);
+ inc = 0;
+ break;
+ case DELTA_PACKED:
+ buf = new AppendingDeltaPackedLongBuffer(initialPageCount, pageSize, acceptableOverheadRatio);
+ inc = 0;
+ break;
+ case MONOTONIC:
+ buf = new MonotonicAppendingLongBuffer(initialPageCount, pageSize, acceptableOverheadRatio);
+ inc = _TestUtil.nextInt(random(), -1000, 1000);
+ break;
+ default:
+ throw new RuntimeException("added a type and forgot to add it here?");
+
}
+
if (bpv == 0) {
arr[0] = random().nextLong();
for (int i = 1; i < arr.length; ++i) {
- arr[i] = arr[i-1] + inc;
+ arr[i] = arr[i - 1] + inc;
}
} else if (bpv == 64) {
for (int i = 0; i < arr.length; ++i) {
@@ -832,10 +997,24 @@ public class TestPackedInts extends Luce
arr[i] = minValue + inc * i + random().nextLong() & PackedInts.maxValue(bpv); // _TestUtil.nextLong is too slow
}
}
+
for (int i = 0; i < arr.length; ++i) {
buf.add(arr[i]);
}
assertEquals(arr.length, buf.size());
+ if (random().nextBoolean()) {
+ buf.freeze();
+ if (random().nextBoolean()) {
+ // Make sure double freeze doesn't break anything
+ buf.freeze();
+ }
+ }
+ assertEquals(arr.length, buf.size());
+
+ for (int i = 0; i < arr.length; ++i) {
+ assertEquals(arr[i], buf.get(i));
+ }
+
final AbstractAppendingLongBuffer.Iterator it = buf.iterator();
for (int i = 0; i < arr.length; ++i) {
if (random().nextBoolean()) {
@@ -844,15 +1023,30 @@ public class TestPackedInts extends Luce
assertEquals(arr[i], it.next());
}
assertFalse(it.hasNext());
-
- for (int i = 0; i < arr.length; ++i) {
- assertEquals(arr[i], buf.get(i));
+
+
+ long[] target = new long[arr.length + 1024]; // check the request for more is OK.
+ for (int i = 0; i < arr.length; i += _TestUtil.nextInt(random(), 0, 10000)) {
+ int lenToRead = random().nextInt(buf.pageSize() * 2) + 1;
+ lenToRead = Math.min(lenToRead, target.length - i);
+ int lenToCheck = Math.min(lenToRead, arr.length - i);
+ int off = i;
+ while (off < arr.length && lenToRead > 0) {
+ int read = buf.get(off, target, off, lenToRead);
+ assertTrue(read > 0);
+ assertTrue(read <= lenToRead);
+ lenToRead -= read;
+ off += read;
+ }
+
+ for (int j = 0; j < lenToCheck; j++) {
+ assertEquals(arr[j + i], target[j + i]);
+ }
}
-
+
final long expectedBytesUsed = RamUsageEstimator.sizeOf(buf);
final long computedBytesUsed = buf.ramBytesUsed();
- assertEquals("got " + computedBytesUsed + ", expected: " + expectedBytesUsed,
- expectedBytesUsed, computedBytesUsed);
+ assertEquals(expectedBytesUsed, computedBytesUsed);
}
}
}
Modified: lucene/dev/branches/lucene4956/lucene/demo/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/demo/build.xml?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/demo/build.xml (original)
+++ lucene/dev/branches/lucene4956/lucene/demo/build.xml Sun Aug 11 12:19:13 2013
@@ -58,7 +58,7 @@
<echo>Compiling XML QueryParser Demo WAR</echo>
<war destfile="${build.dir}/lucene-xml-query-demo.war" webxml="src/resources/org/apache/lucene/demo/xmlparser/WEB-INF/web.xml">
- <fileset dir="src/resources/org/apache/lucene/demo/xmlparser/"/>
+ <fileset dir="${resources.dir}/org/apache/lucene/demo/xmlparser/"/>
<lib dir="${build.dir}">
<include name="${final.name}.jar"/>
</lib>
Modified: lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java (original)
+++ lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java Sun Aug 11 12:19:13 2013
@@ -1,27 +1,20 @@
package org.apache.lucene.demo.facet;
import java.io.IOException;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
import org.apache.lucene.document.Document;
-import org.apache.lucene.facet.associations.AssociationFloatSumFacetRequest;
-import org.apache.lucene.facet.associations.AssociationIntSumFacetRequest;
import org.apache.lucene.facet.associations.AssociationsFacetFields;
import org.apache.lucene.facet.associations.CategoryAssociation;
import org.apache.lucene.facet.associations.CategoryAssociationsContainer;
import org.apache.lucene.facet.associations.CategoryFloatAssociation;
import org.apache.lucene.facet.associations.CategoryIntAssociation;
-import org.apache.lucene.facet.associations.MultiAssociationsFacetsAggregator;
-import org.apache.lucene.facet.associations.SumFloatAssociationFacetsAggregator;
-import org.apache.lucene.facet.associations.SumIntAssociationFacetsAggregator;
+import org.apache.lucene.facet.associations.SumFloatAssociationFacetRequest;
+import org.apache.lucene.facet.associations.SumIntAssociationFacetRequest;
import org.apache.lucene.facet.index.FacetFields;
import org.apache.lucene.facet.params.FacetSearchParams;
import org.apache.lucene.facet.search.FacetResult;
-import org.apache.lucene.facet.search.FacetsAccumulator;
-import org.apache.lucene.facet.search.FacetsAggregator;
import org.apache.lucene.facet.search.FacetsCollector;
import org.apache.lucene.facet.taxonomy.CategoryPath;
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
@@ -135,22 +128,9 @@ public class AssociationsFacetsExample {
CategoryPath tags = new CategoryPath("tags");
CategoryPath genre = new CategoryPath("genre");
- FacetSearchParams fsp = new FacetSearchParams(
- new AssociationIntSumFacetRequest(tags, 10),
- new AssociationFloatSumFacetRequest(genre, 10));
-
- // every category has a different type of association, so use chain their
- // respective aggregators.
- final Map<CategoryPath,FacetsAggregator> aggregators = new HashMap<CategoryPath,FacetsAggregator>();
- aggregators.put(tags, new SumIntAssociationFacetsAggregator());
- aggregators.put(genre, new SumFloatAssociationFacetsAggregator());
- FacetsAccumulator fa = new FacetsAccumulator(fsp, indexReader, taxoReader) {
- @Override
- public FacetsAggregator getAggregator() {
- return new MultiAssociationsFacetsAggregator(aggregators);
- }
- };
- FacetsCollector fc = FacetsCollector.create(fa);
+ FacetSearchParams fsp = new FacetSearchParams(new SumIntAssociationFacetRequest(tags, 10),
+ new SumFloatAssociationFacetRequest(genre, 10));
+ FacetsCollector fc = FacetsCollector.create(fsp, indexReader, taxoReader);
// MatchAllDocsQuery is for "browsing" (counts facets
// for all non-deleted docs in the index); normally
Modified: lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java (original)
+++ lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java Sun Aug 11 12:19:13 2013
@@ -27,7 +27,6 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.facet.params.FacetIndexingParams;
-import org.apache.lucene.facet.params.FacetSearchParams;
import org.apache.lucene.facet.range.LongRange;
import org.apache.lucene.facet.range.RangeAccumulator;
import org.apache.lucene.facet.range.RangeFacetRequest;
@@ -80,13 +79,12 @@ public class RangeFacetsExample implemen
/** User runs a query and counts facets. */
public List<FacetResult> search() throws IOException {
- FacetSearchParams fsp = new FacetSearchParams(
- new RangeFacetRequest<LongRange>("timestamp",
- new LongRange("Past hour", nowSec-3600, true, nowSec, true),
- new LongRange("Past six hours", nowSec-6*3600, true, nowSec, true),
- new LongRange("Past day", nowSec-24*3600, true, nowSec, true)));
+ RangeFacetRequest<LongRange> rangeFacetRequest = new RangeFacetRequest<LongRange>("timestamp",
+ new LongRange("Past hour", nowSec-3600, true, nowSec, true),
+ new LongRange("Past six hours", nowSec-6*3600, true, nowSec, true),
+ new LongRange("Past day", nowSec-24*3600, true, nowSec, true));
// Aggregatses the facet counts
- FacetsCollector fc = FacetsCollector.create(new RangeAccumulator(fsp, searcher.getIndexReader()));
+ FacetsCollector fc = FacetsCollector.create(new RangeAccumulator(rangeFacetRequest));
// MatchAllDocsQuery is for "browsing" (counts facets
// for all non-deleted docs in the index); normally
@@ -112,6 +110,7 @@ public class RangeFacetsExample implemen
return searcher.search(q, 10);
}
+ @Override
public void close() throws IOException {
searcher.getIndexReader().close();
indexDir.close();
Modified: lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java (original)
+++ lucene/dev/branches/lucene4956/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java Sun Aug 11 12:19:13 2013
@@ -91,7 +91,7 @@ public class SimpleSortedSetFacetsExampl
new CountFacetRequest(new CategoryPath("Author"), 10));
// Aggregatses the facet counts
- FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(fsp, state));
+ FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(state, fsp));
// MatchAllDocsQuery is for "browsing" (counts facets
// for all non-deleted docs in the index); normally
@@ -117,7 +117,7 @@ public class SimpleSortedSetFacetsExampl
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(new CategoryPath("Author"), 10));
DrillDownQuery q = new DrillDownQuery(fsp.indexingParams, new MatchAllDocsQuery());
q.add(new CategoryPath("Publish Year/2010", '/'));
- FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(fsp, state));
+ FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(state, fsp));
searcher.search(q, fc);
// Retrieve results
Modified: lucene/dev/branches/lucene4956/lucene/facet/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/facet/build.xml?rev=1512909&r1=1512908&r2=1512909&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/facet/build.xml (original)
+++ lucene/dev/branches/lucene4956/lucene/facet/build.xml Sun Aug 11 12:19:13 2013
@@ -23,9 +23,6 @@
Faceted indexing and search capabilities
</description>
- <!-- prettify.css/js -->
- <property name="rat.excludes" value="**/prettify.css,**/prettify.js"/>
-
<import file="../module-build.xml"/>
<target name="run-encoding-benchmark" depends="compile-test">