You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/12/07 11:52:05 UTC
svn commit: r1643659 [7/7] - in /lucene/dev/branches/lucene6005/lucene: ./
analysis/common/src/test/org/apache/lucene/analysis/core/
analysis/icu/src/test/org/apache/lucene/collation/
backward-codecs/src/test/org/apache/lucene/index/ benchmark/src/java...
Modified: lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java (original)
+++ lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java Sun Dec 7 10:52:03 2014
@@ -17,28 +17,49 @@ package org.apache.lucene.queryparser.xm
* limitations under the License.
*/
-import org.apache.lucene.index.LeafReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.lucene.document.FieldTypes;
import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.SlowCompositeReaderWrapper;
+import org.apache.lucene.queryparser.xml.ParserException;
import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.NumericRangeFilter;
+import org.apache.lucene.search.TermRangeFilter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.queryparser.xml.ParserException;
+import org.junit.BeforeClass;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
+public class TestNumericRangeFilterBuilder extends LuceneTestCase {
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
+ private static FieldTypes fieldTypes;
-public class TestNumericRangeFilterBuilder extends LuceneTestCase {
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ Directory dir = newDirectory();
+ IndexWriter w = newIndexWriter(dir);
+ org.apache.lucene.document.Document doc = w.newDocument();
+ doc.addInt("AGE_INT", 14);
+ doc.addLong("AGE_LONG", 14L);
+ doc.addFloat("AGE_FLOAT", 14F);
+ doc.addDouble("AGE_DOUBLE", 14D);
+ w.addDocument(doc);
+ IndexReader r = DirectoryReader.open(w, true);
+ fieldTypes = r.getFieldTypes();
+ w.close();
+ r.close();
+ dir.close();
+ }
public void testGetFilterHandleNumericParseErrorStrict() throws Exception {
NumericRangeFilterBuilder filterBuilder = new NumericRangeFilterBuilder();
@@ -47,7 +68,7 @@ public class TestNumericRangeFilterBuild
String xml = "<NumericRangeFilter fieldName='AGE' type='int' lowerTerm='-1' upperTerm='NaN'/>";
Document doc = getDocumentFromString(xml);
try {
- filterBuilder.getFilter(doc.getDocumentElement());
+ filterBuilder.getFilter(fieldTypes, doc.getDocumentElement());
} catch (ParserException e) {
return;
}
@@ -58,9 +79,9 @@ public class TestNumericRangeFilterBuild
NumericRangeFilterBuilder filterBuilder = new NumericRangeFilterBuilder();
filterBuilder.setStrictMode(false);
- String xml = "<NumericRangeFilter fieldName='AGE' type='int' lowerTerm='-1' upperTerm='NaN'/>";
+ String xml = "<NumericRangeFilter fieldName='AGE_INT' type='int' lowerTerm='-1' upperTerm='NaN'/>";
Document doc = getDocumentFromString(xml);
- Filter filter = filterBuilder.getFilter(doc.getDocumentElement());
+ Filter filter = filterBuilder.getFilter(fieldTypes, doc.getDocumentElement());
Directory ramDir = newDirectory();
IndexWriter writer = new IndexWriter(ramDir, newIndexWriterConfig(null));
writer.commit();
@@ -85,29 +106,25 @@ public class TestNumericRangeFilterBuild
NumericRangeFilterBuilder filterBuilder = new NumericRangeFilterBuilder();
filterBuilder.setStrictMode(true);
- String xml = "<NumericRangeFilter fieldName='AGE' type='int' lowerTerm='-1' upperTerm='10'/>";
+ String xml = "<NumericRangeFilter fieldName='AGE_INT' type='int' lowerTerm='-1' upperTerm='10'/>";
Document doc = getDocumentFromString(xml);
- Filter filter = filterBuilder.getFilter(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeFilter<?>);
-
- NumericRangeFilter<Integer> numRangeFilter = (NumericRangeFilter<Integer>) filter;
- assertEquals(Integer.valueOf(-1), numRangeFilter.getMin());
- assertEquals(Integer.valueOf(10), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ Filter filter = filterBuilder.getFilter(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof TermRangeFilter);
+ assertTrue(filter.toString(), filter.toString().contains("[-1 TO 10]"));
+ TermRangeFilter numRangeFilter = (TermRangeFilter) filter;
+ assertEquals("AGE_INT", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeFilter fieldName='AGE' type='int' lowerTerm='-1' upperTerm='10' includeUpper='false'/>";
+ String xml2 = "<NumericRangeFilter fieldName='AGE_INT' type='int' lowerTerm='-1' upperTerm='10' includeUpper='false'/>";
Document doc2 = getDocumentFromString(xml2);
- Filter filter2 = filterBuilder.getFilter(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeFilter);
-
- NumericRangeFilter<Integer> numRangeFilter2 = (NumericRangeFilter) filter2;
- assertEquals(Integer.valueOf(-1), numRangeFilter2.getMin());
- assertEquals(Integer.valueOf(10), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ Filter filter2 = filterBuilder.getFilter(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof TermRangeFilter);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-1 TO 10}"));
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) filter2;
+ assertEquals("AGE_INT", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
@SuppressWarnings({"unchecked","rawtypes"})
@@ -115,28 +132,27 @@ public class TestNumericRangeFilterBuild
NumericRangeFilterBuilder filterBuilder = new NumericRangeFilterBuilder();
filterBuilder.setStrictMode(true);
- String xml = "<NumericRangeFilter fieldName='AGE' type='LoNg' lowerTerm='-2321' upperTerm='60000000'/>";
+ String xml = "<NumericRangeFilter fieldName='AGE_LONG' type='LoNg' lowerTerm='-2321' upperTerm='60000000'/>";
Document doc = getDocumentFromString(xml);
- Filter filter = filterBuilder.getFilter(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeFilter<?>);
-
- NumericRangeFilter<Long> numRangeFilter = (NumericRangeFilter) filter;
- assertEquals(Long.valueOf(-2321L), numRangeFilter.getMin());
- assertEquals(Long.valueOf(60000000L), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ Filter filter = filterBuilder.getFilter(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof TermRangeFilter);
+ assertTrue(filter.toString(), filter.toString().contains("[-2321 TO 60000000]"));
+
+ TermRangeFilter numRangeFilter = (TermRangeFilter) filter;
+ assertEquals("AGE_LONG", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeFilter fieldName='AGE' type='LoNg' lowerTerm='-2321' upperTerm='60000000' includeUpper='false'/>";
+ String xml2 = "<NumericRangeFilter fieldName='AGE_LONG' type='LoNg' lowerTerm='-2321' upperTerm='60000000' includeUpper='false'/>";
Document doc2 = getDocumentFromString(xml2);
- Filter filter2 = filterBuilder.getFilter(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeFilter<?>);
- NumericRangeFilter<Long> numRangeFilter2 = (NumericRangeFilter) filter2;
- assertEquals(Long.valueOf(-2321L), numRangeFilter2.getMin());
- assertEquals(Long.valueOf(60000000L), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ Filter filter2 = filterBuilder.getFilter(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof TermRangeFilter);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-2321 TO 60000000}"));
+
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) filter2;
+ assertEquals("AGE_LONG", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
@SuppressWarnings({"unchecked","rawtypes"})
@@ -144,30 +160,26 @@ public class TestNumericRangeFilterBuild
NumericRangeFilterBuilder filterBuilder = new NumericRangeFilterBuilder();
filterBuilder.setStrictMode(true);
- String xml = "<NumericRangeFilter fieldName='AGE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023'/>";
+ String xml = "<NumericRangeFilter fieldName='AGE_DOUBLE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023'/>";
Document doc = getDocumentFromString(xml);
- Filter filter = filterBuilder.getFilter(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeFilter<?>);
+ Filter filter = filterBuilder.getFilter(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof TermRangeFilter);
+ assertTrue(filter.toString(), filter.toString().contains("[-23.21 TO 60000.00023]"));
+ TermRangeFilter numRangeFilter = (TermRangeFilter) filter;
+ assertEquals("AGE_DOUBLE", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- NumericRangeFilter<Double> numRangeFilter = (NumericRangeFilter) filter;
- assertEquals(Double.valueOf(-23.21d), numRangeFilter.getMin());
- assertEquals(Double.valueOf(60000.00023d), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
-
- String xml2 = "<NumericRangeFilter fieldName='AGE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023' includeUpper='false'/>";
+ String xml2 = "<NumericRangeFilter fieldName='AGE_DOUBLE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023' includeUpper='false'/>";
Document doc2 = getDocumentFromString(xml2);
- Filter filter2 = filterBuilder.getFilter(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeFilter<?>);
-
- NumericRangeFilter<Double> numRangeFilter2 = (NumericRangeFilter) filter2;
- assertEquals(Double.valueOf(-23.21d), numRangeFilter2.getMin());
- assertEquals(Double.valueOf(60000.00023d), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ Filter filter2 = filterBuilder.getFilter(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof TermRangeFilter);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-23.21 TO 60000.00023}"));
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) filter2;
+ assertEquals("AGE_DOUBLE", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
@SuppressWarnings({"unchecked","rawtypes"})
@@ -175,31 +187,27 @@ public class TestNumericRangeFilterBuild
NumericRangeFilterBuilder filterBuilder = new NumericRangeFilterBuilder();
filterBuilder.setStrictMode(true);
- String xml = "<NumericRangeFilter fieldName='AGE' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23'/>";
+ String xml = "<NumericRangeFilter fieldName='AGE_FLOAT' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23'/>";
Document doc = getDocumentFromString(xml);
- Filter filter = filterBuilder.getFilter(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeFilter<?>);
-
- NumericRangeFilter<Float> numRangeFilter = (NumericRangeFilter) filter;
- assertEquals(Float.valueOf(-2.321432f), numRangeFilter.getMin());
- assertEquals(Float.valueOf(32432.23f), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ Filter filter = filterBuilder.getFilter(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof TermRangeFilter);
+ assertTrue(filter.toString(), filter.toString().contains("[-2.321432 TO 32432.23]"));
+ TermRangeFilter numRangeFilter = (TermRangeFilter) filter;
+ assertEquals("AGE_FLOAT", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeFilter fieldName='AGE' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23' includeUpper='false' precisionStep='2' />";
+ String xml2 = "<NumericRangeFilter fieldName='AGE_FLOAT' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23' includeUpper='false' precisionStep='2' />";
Document doc2 = getDocumentFromString(xml2);
- Filter filter2 = filterBuilder.getFilter(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeFilter<?>);
-
- NumericRangeFilter<Float> numRangeFilter2 = (NumericRangeFilter) filter2;
- assertEquals(Float.valueOf(-2.321432f), numRangeFilter2.getMin());
- assertEquals(Float.valueOf(32432.23f), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ Filter filter2 = filterBuilder.getFilter(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof TermRangeFilter);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-2.321432 TO 32432.23}"));
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) filter2;
+ assertEquals("AGE_FLOAT", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
private static Document getDocumentFromString(String str)
Modified: lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeQueryBuilder.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeQueryBuilder.java (original)
+++ lucene/dev/branches/lucene6005/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeQueryBuilder.java Sun Dec 7 10:52:03 2014
@@ -17,23 +17,49 @@ package org.apache.lucene.queryparser.xm
* limitations under the License.
*/
-import org.apache.lucene.search.NumericRangeQuery;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.lucene.document.FieldTypes;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.queryparser.xml.ParserException;
+import org.apache.lucene.search.ConstantScoreQuery;
+import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermRangeFilter;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.queryparser.xml.ParserException;
+import org.junit.BeforeClass;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
+public class TestNumericRangeQueryBuilder extends LuceneTestCase {
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
+ private static FieldTypes fieldTypes;
-public class TestNumericRangeQueryBuilder extends LuceneTestCase {
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ Directory dir = newDirectory();
+ IndexWriter w = newIndexWriter(dir);
+ org.apache.lucene.document.Document doc = w.newDocument();
+ doc.addInt("AGE_INT", 14);
+ doc.addLong("AGE_LONG", 14L);
+ doc.addFloat("AGE_FLOAT", 14F);
+ doc.addDouble("AGE_DOUBLE", 14D);
+ w.addDocument(doc);
+ IndexReader r = DirectoryReader.open(w, true);
+ fieldTypes = r.getFieldTypes();
+ w.close();
+ r.close();
+ dir.close();
+ }
public void testGetFilterHandleNumericParseErrorStrict() throws Exception {
NumericRangeQueryBuilder filterBuilder = new NumericRangeQueryBuilder();
@@ -41,7 +67,7 @@ public class TestNumericRangeQueryBuilde
String xml = "<NumericRangeQuery fieldName='AGE' type='int' lowerTerm='-1' upperTerm='NaN'/>";
Document doc = getDocumentFromString(xml);
try {
- filterBuilder.getQuery(doc.getDocumentElement());
+ filterBuilder.getQuery(fieldTypes, doc.getDocumentElement());
} catch (ParserException e) {
return;
}
@@ -52,118 +78,113 @@ public class TestNumericRangeQueryBuilde
public void testGetFilterInt() throws Exception {
NumericRangeQueryBuilder filterBuilder = new NumericRangeQueryBuilder();
- String xml = "<NumericRangeQuery fieldName='AGE' type='int' lowerTerm='-1' upperTerm='10'/>";
+ String xml = "<NumericRangeQuery fieldName='AGE_INT' type='int' lowerTerm='-1' upperTerm='10'/>";
Document doc = getDocumentFromString(xml);
- Query filter = filterBuilder.getQuery(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeQuery<?>);
-
- NumericRangeQuery<Integer> numRangeFilter = (NumericRangeQuery<Integer>) filter;
- assertEquals(Integer.valueOf(-1), numRangeFilter.getMin());
- assertEquals(Integer.valueOf(10), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ Query filter = filterBuilder.getQuery(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof ConstantScoreQuery);
+ assertTrue(filter.toString(), filter.toString().contains("[-1 TO 10]"));
+
+ TermRangeFilter numRangeFilter = (TermRangeFilter) ((ConstantScoreQuery) filter).getFilter();
+ assertEquals("AGE_INT", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeQuery fieldName='AGE' type='int' lowerTerm='-1' upperTerm='10' includeUpper='false'/>";
+ String xml2 = "<NumericRangeQuery fieldName='AGE_INT' type='int' lowerTerm='-1' upperTerm='10' includeUpper='false'/>";
Document doc2 = getDocumentFromString(xml2);
- Query filter2 = filterBuilder.getQuery(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeQuery<?>);
-
- NumericRangeQuery<Integer> numRangeFilter2 = (NumericRangeQuery) filter2;
- assertEquals(Integer.valueOf(-1), numRangeFilter2.getMin());
- assertEquals(Integer.valueOf(10), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ Query filter2 = filterBuilder.getQuery(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof ConstantScoreQuery);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-1 TO 10}"));
+
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) ((ConstantScoreQuery) filter2).getFilter();
+ assertEquals("AGE_INT", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
@SuppressWarnings({"unchecked","rawtypes"})
public void testGetFilterLong() throws Exception {
NumericRangeQueryBuilder filterBuilder = new NumericRangeQueryBuilder();
- String xml = "<NumericRangeQuery fieldName='AGE' type='LoNg' lowerTerm='-2321' upperTerm='60000000'/>";
+ String xml = "<NumericRangeQuery fieldName='AGE_LONG' type='LoNg' lowerTerm='-2321' upperTerm='60000000'/>";
Document doc = getDocumentFromString(xml);
- Query filter = filterBuilder.getQuery(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeQuery<?>);
- NumericRangeQuery<Long> numRangeFilter = (NumericRangeQuery) filter;
- assertEquals(Long.valueOf(-2321L), numRangeFilter.getMin());
- assertEquals(Long.valueOf(60000000L), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ Query filter = filterBuilder.getQuery(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof ConstantScoreQuery);
+ assertTrue(filter.toString(), filter.toString().contains("[-2321 TO 60000000]"));
+
+ TermRangeFilter numRangeFilter = (TermRangeFilter) ((ConstantScoreQuery) filter).getFilter();
+ assertEquals("AGE_LONG", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeQuery fieldName='AGE' type='LoNg' lowerTerm='-2321' upperTerm='60000000' includeUpper='false'/>";
- Document doc2 = getDocumentFromString(xml2);
- Query filter2 = filterBuilder.getQuery(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeQuery<?>);
- NumericRangeQuery<Long> numRangeFilter2 = (NumericRangeQuery) filter2;
- assertEquals(Long.valueOf(-2321L), numRangeFilter2.getMin());
- assertEquals(Long.valueOf(60000000L), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ String xml2 = "<NumericRangeQuery fieldName='AGE_LONG' type='LoNg' lowerTerm='-2321' upperTerm='60000000' includeUpper='false'/>";
+ Document doc2 = getDocumentFromString(xml2);
+ Query filter2 = filterBuilder.getQuery(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof ConstantScoreQuery);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-2321 TO 60000000}"));
+
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) ((ConstantScoreQuery) filter2).getFilter();
+ assertEquals("AGE_LONG", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
@SuppressWarnings({"unchecked","rawtypes"})
public void testGetFilterDouble() throws Exception {
NumericRangeQueryBuilder filterBuilder = new NumericRangeQueryBuilder();
- String xml = "<NumericRangeQuery fieldName='AGE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023'/>";
+ String xml = "<NumericRangeQuery fieldName='AGE_DOUBLE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023'/>";
Document doc = getDocumentFromString(xml);
- Query filter = filterBuilder.getQuery(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeQuery<?>);
+ Query filter = filterBuilder.getQuery(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof ConstantScoreQuery);
+ assertTrue(filter.toString(), filter.toString().contains("[-23.21 TO 60000.00023]"));
- NumericRangeQuery<Double> numRangeFilter = (NumericRangeQuery) filter;
- assertEquals(Double.valueOf(-23.21d), numRangeFilter.getMin());
- assertEquals(Double.valueOf(60000.00023d), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ TermRangeFilter numRangeFilter = (TermRangeFilter) ((ConstantScoreQuery) filter).getFilter();
+ assertEquals("AGE_DOUBLE", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeQuery fieldName='AGE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023' includeUpper='false'/>";
- Document doc2 = getDocumentFromString(xml2);
- Query filter2 = filterBuilder.getQuery(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeQuery<?>);
- NumericRangeQuery<Double> numRangeFilter2 = (NumericRangeQuery) filter2;
- assertEquals(Double.valueOf(-23.21d), numRangeFilter2.getMin());
- assertEquals(Double.valueOf(60000.00023d), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ String xml2 = "<NumericRangeQuery fieldName='AGE_DOUBLE' type='doubLe' lowerTerm='-23.21' upperTerm='60000.00023' includeUpper='false'/>";
+ Document doc2 = getDocumentFromString(xml2);
+ Query filter2 = filterBuilder.getQuery(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof ConstantScoreQuery);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-23.21 TO 60000.00023}"));
+
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) ((ConstantScoreQuery) filter2).getFilter();
+ assertEquals("AGE_DOUBLE", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
@SuppressWarnings({"unchecked","rawtypes"})
public void testGetFilterFloat() throws Exception {
NumericRangeQueryBuilder filterBuilder = new NumericRangeQueryBuilder();
- String xml = "<NumericRangeQuery fieldName='AGE' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23'/>";
+ String xml = "<NumericRangeQuery fieldName='AGE_FLOAT' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23'/>";
Document doc = getDocumentFromString(xml);
- Query filter = filterBuilder.getQuery(doc.getDocumentElement());
- assertTrue(filter instanceof NumericRangeQuery<?>);
-
- NumericRangeQuery<Float> numRangeFilter = (NumericRangeQuery) filter;
- assertEquals(Float.valueOf(-2.321432f), numRangeFilter.getMin());
- assertEquals(Float.valueOf(32432.23f), numRangeFilter.getMax());
- assertEquals("AGE", numRangeFilter.getField());
- assertTrue(numRangeFilter.includesMin());
- assertTrue(numRangeFilter.includesMax());
+ Query filter = filterBuilder.getQuery(fieldTypes, doc.getDocumentElement());
+ assertTrue(filter instanceof ConstantScoreQuery);
+ assertTrue(filter.toString(), filter.toString().contains("[-2.321432 TO 32432.23]"));
+
+ TermRangeFilter numRangeFilter = (TermRangeFilter) ((ConstantScoreQuery) filter).getFilter();
+ assertEquals("AGE_FLOAT", numRangeFilter.getField());
+ assertTrue(numRangeFilter.includesLower());
+ assertTrue(numRangeFilter.includesUpper());
- String xml2 = "<NumericRangeQuery fieldName='AGE' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23' includeUpper='false' precisionStep='2' />";
+ String xml2 = "<NumericRangeQuery fieldName='AGE_FLOAT' type='FLOAT' lowerTerm='-2.321432' upperTerm='32432.23' includeUpper='false' precisionStep='2' />";
Document doc2 = getDocumentFromString(xml2);
- Query filter2 = filterBuilder.getQuery(doc2.getDocumentElement());
- assertTrue(filter2 instanceof NumericRangeQuery<?>);
-
- NumericRangeQuery<Float> numRangeFilter2 = (NumericRangeQuery) filter2;
- assertEquals(Float.valueOf(-2.321432f), numRangeFilter2.getMin());
- assertEquals(Float.valueOf(32432.23f), numRangeFilter2.getMax());
- assertEquals("AGE", numRangeFilter2.getField());
- assertTrue(numRangeFilter2.includesMin());
- assertFalse(numRangeFilter2.includesMax());
+ Query filter2 = filterBuilder.getQuery(fieldTypes, doc2.getDocumentElement());
+ assertTrue(filter2 instanceof ConstantScoreQuery);
+ assertTrue(filter2.toString(), filter2.toString().contains("[-2.321432 TO 32432.23}"));
+
+ TermRangeFilter numRangeFilter2 = (TermRangeFilter) ((ConstantScoreQuery) filter2).getFilter();
+ assertEquals("AGE_FLOAT", numRangeFilter2.getField());
+ assertTrue(numRangeFilter2.includesLower());
+ assertFalse(numRangeFilter2.includesUpper());
}
private static Document getDocumentFromString(String str)
Modified: lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeFilter.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeFilter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeFilter.java Sun Dec 7 10:52:03 2014
@@ -20,7 +20,6 @@ package org.apache.lucene.sandbox.querie
import java.text.Collator;
import org.apache.lucene.search.MultiTermQueryWrapperFilter;
-import org.apache.lucene.search.NumericRangeFilter; // javadoc
import org.apache.lucene.search.DocValuesRangeFilter; // javadoc
/**
Modified: lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java (original)
+++ lucene/dev/branches/lucene6005/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java Sun Dec 7 10:52:03 2014
@@ -23,7 +23,6 @@ import java.text.Collator;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.MultiTermQuery; // javadoc
-import org.apache.lucene.search.NumericRangeQuery; // javadoc
import org.apache.lucene.util.AttributeSource;
import org.apache.lucene.util.ToStringUtils;
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxStrategy.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxStrategy.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxStrategy.java Sun Dec 7 10:52:03 2014
@@ -27,7 +27,6 @@ import org.apache.lucene.search.BooleanC
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.ConstantScoreQuery;
import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryWrapperFilter;
import org.apache.lucene.search.TermQuery;
@@ -36,6 +35,7 @@ import org.apache.lucene.spatial.query.S
import org.apache.lucene.spatial.query.SpatialOperation;
import org.apache.lucene.spatial.query.UnsupportedSpatialOperation;
import org.apache.lucene.spatial.util.DistanceToShapeValueSource;
+import org.apache.lucene.util.NumericUtils;
import com.spatial4j.core.context.SpatialContext;
import com.spatial4j.core.shape.Point;
import com.spatial4j.core.shape.Rectangle;
@@ -62,7 +62,7 @@ import com.spatial4j.core.shape.Shape;
* <p>
* This uses 4 double fields for minX, maxX, minY, maxY
* and a boolean to mark a dateline cross. Depending on the particular {@link
- * SpatialOperation}s, there are a variety of {@link NumericRangeQuery}s to be
+ * SpatialOperation}s, there are a variety of range queries to be
* done.
* The {@link #makeOverlapRatioValueSource(com.spatial4j.core.shape.Rectangle, double)}
* works by calculating the query bbox overlap percentage against the indexed
@@ -215,8 +215,8 @@ public class BBoxStrategy extends Spatia
// Y conditions
// docMinY <= queryExtent.getMinY() AND docMaxY >= queryExtent.getMaxY()
- Query qMinY = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minY, null, false, bbox.getMinY(), true));
- Query qMaxY = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxY, bbox.getMaxY(), true, null, false));
+ Query qMinY = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minY, null, false, bbox.getMinY(), true));
+ Query qMaxY = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxY, bbox.getMaxY(), true, null, false));
Query yConditions = this.makeQuery(BooleanClause.Occur.MUST, qMinY, qMaxY);
// X conditions
@@ -228,8 +228,8 @@ public class BBoxStrategy extends Spatia
// X Conditions for documents that do not cross the date line,
// documents that contain the min X and max X of the query envelope,
// docMinX <= queryExtent.getMinX() AND docMaxX >= queryExtent.getMaxX()
- Query qMinX = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, null, false, bbox.getMinX(), true));
- Query qMaxX = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, bbox.getMaxX(), true, null, false));
+ Query qMinX = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, null, false, bbox.getMinX(), true));
+ Query qMaxX = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, bbox.getMaxX(), true, null, false));
Query qMinMax = this.makeQuery(BooleanClause.Occur.MUST, qMinX, qMaxX);
Query qNonXDL = this.makeXDL(false, qMinMax);
@@ -240,8 +240,8 @@ public class BBoxStrategy extends Spatia
// the left portion of the document contains the min X of the query
// OR the right portion of the document contains the max X of the query,
// docMinXLeft <= queryExtent.getMinX() OR docMaxXRight >= queryExtent.getMaxX()
- Query qXDLLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, null, false, bbox.getMinX(), true));
- Query qXDLRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, bbox.getMaxX(), true, null, false));
+ Query qXDLLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, null, false, bbox.getMinX(), true));
+ Query qXDLRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, bbox.getMaxX(), true, null, false));
Query qXDLLeftRight = this.makeQuery(BooleanClause.Occur.SHOULD, qXDLLeft, qXDLRight);
Query qXDL = this.makeXDL(true, qXDLLeftRight);
@@ -264,8 +264,8 @@ public class BBoxStrategy extends Spatia
// the left portion of the document contains the min X of the query
// AND the right portion of the document contains the max X of the query,
// docMinXLeft <= queryExtent.getMinX() AND docMaxXRight >= queryExtent.getMaxX()
- Query qXDLLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, null, false, bbox.getMinX(), true));
- Query qXDLRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, bbox.getMaxX(), true, null, false));
+ Query qXDLLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, null, false, bbox.getMinX(), true));
+ Query qXDLRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, bbox.getMaxX(), true, null, false));
Query qXDLLeftRight = this.makeXDL(true, this.makeQuery(BooleanClause.Occur.MUST, qXDLLeft, qXDLRight));
Query qWorld = makeQuery(BooleanClause.Occur.MUST,
@@ -290,8 +290,8 @@ public class BBoxStrategy extends Spatia
// Y conditions
// docMinY > queryExtent.getMaxY() OR docMaxY < queryExtent.getMinY()
- Query qMinY = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minY, bbox.getMaxY(), false, null, false));
- Query qMaxY = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxY, null, false, bbox.getMinY(), false));
+ Query qMinY = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minY, bbox.getMaxY(), false, null, false));
+ Query qMaxY = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxY, null, false, bbox.getMinY(), false));
Query yConditions = this.makeQuery(BooleanClause.Occur.SHOULD, qMinY, qMaxY);
// X conditions
@@ -302,14 +302,14 @@ public class BBoxStrategy extends Spatia
// X Conditions for documents that do not cross the date line,
// docMinX > queryExtent.getMaxX() OR docMaxX < queryExtent.getMinX()
- Query qMinX = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, bbox.getMaxX(), false, null, false));
+ Query qMinX = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, bbox.getMaxX(), false, null, false));
if (bbox.getMinX() == -180.0 && ctx.isGeo()) {//touches dateline; -180 == 180
BooleanQuery bq = new BooleanQuery();
bq.add(qMinX, BooleanClause.Occur.MUST);
bq.add(makeNumberTermQuery(fieldTypes, field_maxX, 180.0), BooleanClause.Occur.MUST_NOT);
qMinX = bq;
}
- Query qMaxX = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, bbox.getMinX(), false));
+ Query qMaxX = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, bbox.getMinX(), false));
if (bbox.getMaxX() == 180.0 && ctx.isGeo()) {//touches dateline; -180 == 180
BooleanQuery bq = new BooleanQuery();
bq.add(qMaxX, BooleanClause.Occur.MUST);
@@ -330,8 +330,8 @@ public class BBoxStrategy extends Spatia
// where: docMaxXLeft = 180.0, docMinXRight = -180.0
// (docMaxXLeft < queryExtent.getMinX()) equates to (180.0 < queryExtent.getMinX()) and is ignored
// (docMinXRight > queryExtent.getMaxX()) equates to (-180.0 > queryExtent.getMaxX()) and is ignored
- Query qMinXLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, bbox.getMaxX(), false, null, false));
- Query qMaxXRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, bbox.getMinX(), false));
+ Query qMinXLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, bbox.getMaxX(), false, null, false));
+ Query qMaxXRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, bbox.getMinX(), false));
Query qLeftRight = this.makeQuery(BooleanClause.Occur.MUST, qMinXLeft, qMaxXRight);
Query qXDL = this.makeXDL(true, qLeftRight);
@@ -345,10 +345,10 @@ public class BBoxStrategy extends Spatia
// the document must be disjoint to both the left and right query portions
// (docMinX > queryExtent.getMaxX()Left OR docMaxX < queryExtent.getMinX()) AND (docMinX > queryExtent.getMaxX() OR docMaxX < queryExtent.getMinX()Left)
// where: queryExtent.getMaxX()Left = 180.0, queryExtent.getMinX()Left = -180.0
- Query qMinXLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, 180.0, false, null, false));
- Query qMaxXLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false,bbox.getMinX(), false));
- Query qMinXRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, bbox.getMaxX(), false, null, false));
- Query qMaxXRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, -180.0, false));
+ Query qMinXLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, 180.0, false, null, false));
+ Query qMaxXLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false,bbox.getMinX(), false));
+ Query qMinXRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, bbox.getMaxX(), false, null, false));
+ Query qMaxXRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, -180.0, false));
Query qLeft = this.makeQuery(BooleanClause.Occur.SHOULD, qMinXLeft, qMaxXLeft);
Query qRight = this.makeQuery(BooleanClause.Occur.SHOULD, qMinXRight, qMaxXRight);
Query qLeftRight = this.makeQuery(BooleanClause.Occur.MUST, qLeft, qRight);
@@ -440,8 +440,8 @@ public class BBoxStrategy extends Spatia
// Y conditions
// docMinY >= queryExtent.getMinY() AND docMaxY <= queryExtent.getMaxY()
- Query qMinY = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minY, bbox.getMinY(), true, null, false));
- Query qMaxY = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxY, null, false, bbox.getMaxY(), true));
+ Query qMinY = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minY, bbox.getMinY(), true, null, false));
+ Query qMaxY = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxY, null, false, bbox.getMaxY(), true));
Query yConditions = this.makeQuery(BooleanClause.Occur.MUST, qMinY, qMaxY);
// X conditions
@@ -455,8 +455,8 @@ public class BBoxStrategy extends Spatia
// queries that do not cross the date line
// docMinX >= queryExtent.getMinX() AND docMaxX <= queryExtent.getMaxX()
- Query qMinX = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, bbox.getMinX(), true, null, false));
- Query qMaxX = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, bbox.getMaxX(), true));
+ Query qMinX = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, bbox.getMinX(), true, null, false));
+ Query qMaxX = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, bbox.getMaxX(), true));
Query qMinMax = this.makeQuery(BooleanClause.Occur.MUST, qMinX, qMaxX);
double edge = 0;//none, otherwise opposite dateline of query
@@ -479,14 +479,14 @@ public class BBoxStrategy extends Spatia
// the document should be within the left portion of the query
// docMinX >= queryExtent.getMinX() AND docMaxX <= 180.0
- Query qMinXLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, bbox.getMinX(), true, null, false));
- Query qMaxXLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, 180.0, true));
+ Query qMinXLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, bbox.getMinX(), true, null, false));
+ Query qMaxXLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, 180.0, true));
Query qLeft = this.makeQuery(BooleanClause.Occur.MUST, qMinXLeft, qMaxXLeft);
// the document should be within the right portion of the query
// docMinX >= -180.0 AND docMaxX <= queryExtent.getMaxX()
- Query qMinXRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, -180.0, true, null, false));
- Query qMaxXRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, bbox.getMaxX(), true));
+ Query qMinXRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, -180.0, true, null, false));
+ Query qMaxXRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, bbox.getMaxX(), true));
Query qRight = this.makeQuery(BooleanClause.Occur.MUST, qMinXRight, qMaxXRight);
// either left or right conditions should occur,
@@ -499,8 +499,8 @@ public class BBoxStrategy extends Spatia
// AND the right portion of the document must be within the right portion of the query
// docMinXLeft >= queryExtent.getMinX() AND docMaxXLeft <= 180.0
// AND docMinXRight >= -180.0 AND docMaxXRight <= queryExtent.getMaxX()
- Query qXDLLeft = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_minX, bbox.getMinX(), true, null, false));
- Query qXDLRight = new ConstantScoreQuery(fieldTypes.newRangeFilter(field_maxX, null, false, bbox.getMaxX(), true));
+ Query qXDLLeft = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_minX, bbox.getMinX(), true, null, false));
+ Query qXDLRight = new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(field_maxX, null, false, bbox.getMaxX(), true));
Query qXDLLeftRight = this.makeQuery(BooleanClause.Occur.MUST, qXDLLeft, qXDLRight);
Query qXDL = this.makeXDL(true, qXDLLeftRight);
@@ -543,7 +543,7 @@ public class BBoxStrategy extends Spatia
}
private Query makeNumberTermQuery(FieldTypes fieldTypes, String field, double number) {
- return new TermQuery(new Term(field, Document.doubleToSortableBytes(number)));
+ return new TermQuery(new Term(field, NumericUtils.doubleToBytes(number)));
}
}
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java Sun Dec 7 10:52:03 2014
@@ -29,6 +29,7 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.NumericUtils;
import com.spatial4j.core.shape.Rectangle;
/**
@@ -69,10 +70,10 @@ class BBoxValueSource extends ValueSourc
return null;
} else {
rect.reset(
- Document.longToDouble(minX.get(doc)),
- Document.longToDouble(maxX.get(doc)),
- Document.longToDouble(minY.get(doc)),
- Document.longToDouble(maxY.get(doc)));
+ NumericUtils.longToDouble(minX.get(doc)),
+ NumericUtils.longToDouble(maxX.get(doc)),
+ NumericUtils.longToDouble(minY.get(doc)),
+ NumericUtils.longToDouble(maxY.get(doc)));
return rect;
}
}
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/DistanceValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/DistanceValueSource.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/DistanceValueSource.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/DistanceValueSource.java Sun Dec 7 10:52:03 2014
@@ -28,6 +28,7 @@ import org.apache.lucene.index.NumericDo
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.NumericUtils;
import com.spatial4j.core.distance.DistanceCalculator;
import com.spatial4j.core.shape.Point;
@@ -89,7 +90,7 @@ public class DistanceValueSource extends
// make sure it has minX and area
if (validX.get(doc)) {
assert validY.get(doc);
- return calculator.distance(from, Document.longToDouble(ptX.get(doc)), Document.longToDouble(ptY.get(doc))) * multiplier;
+ return calculator.distance(from, NumericUtils.longToDouble(ptX.get(doc)), NumericUtils.longToDouble(ptY.get(doc))) * multiplier;
}
return nullValue;
}
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java Sun Dec 7 10:52:03 2014
@@ -27,7 +27,6 @@ import org.apache.lucene.search.Constant
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.FilteredQuery;
import org.apache.lucene.search.MatchAllDocsQuery;
-import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryWrapperFilter;
import org.apache.lucene.spatial.SpatialStrategy;
@@ -63,7 +62,7 @@ import com.spatial4j.core.shape.Shape;
* <p>
* <b>Implementation:</b>
* <p>
- * This is a simple Strategy. Search works with {@link NumericRangeQuery}s on
+ * This is a simple Strategy. Search works with range queries on
* an x and y pair of fields. A Circle query does the same bbox query but adds a
* ValueSource filter on
* {@link #makeDistanceValueSource(com.spatial4j.core.shape.Point)}.
@@ -243,7 +242,7 @@ public class PointVectorStrategy extends
}
private Query rangeQuery(FieldTypes fieldTypes, String fieldName, Double min, Double max) {
- return new ConstantScoreQuery(fieldTypes.newRangeFilter(
+ return new ConstantScoreQuery(fieldTypes.newDoubleRangeFilter(
fieldName,
min,
true,
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java Sun Dec 7 10:52:03 2014
@@ -106,7 +106,6 @@ public class DistanceStrategyTest extend
@Test
public void testDistanceOrder() throws IOException {
- System.out.println("TEST: strategy=" + strategy);
adoc("100", ctx.makePoint(2, 1));
adoc("101", ctx.makePoint(-1, 4));
adoc("103", (Shape)null);//test score for nothing
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java Sun Dec 7 10:52:03 2014
@@ -114,7 +114,6 @@ public class PortedSolr3Test extends Str
setupDocs();
//Try some edge cases
//NOTE: 2nd arg is distance in kilometers
- System.out.println("STRAT=" + strategy);
checkHitsCircle(ctx.makePoint(1, 1), 175, 3, 5, 6, 7);
checkHitsCircle(ctx.makePoint(179.8, 0), 200, 2, 8, 9);
checkHitsCircle(ctx.makePoint(50, 89.8), 200, 2, 10, 11);//this goes over the north pole
@@ -174,7 +173,6 @@ public class PortedSolr3Test extends Str
} else {
query = new FilteredQuery(new MatchAllDocsQuery(),strategy.makeFilter(fieldTypes, args));
}
- System.out.println("query=" + query);
SearchResults results = executeQuery(query, 100);
assertEquals(""+shape,assertNumFound,results.numFound);
if (assertIds != null) {
Modified: lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/TestTermQueryPrefixGridStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/TestTermQueryPrefixGridStrategy.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/TestTermQueryPrefixGridStrategy.java (original)
+++ lucene/dev/branches/lucene6005/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/TestTermQueryPrefixGridStrategy.java Sun Dec 7 10:52:03 2014
@@ -43,7 +43,7 @@ public class TestTermQueryPrefixGridStra
fieldTypes.setMultiValued(prefixGridStrategy.getFieldName());
prefixGridStrategy.addFields(losAngeles, point);
- losAngeles.addStored(prefixGridStrategy.getFieldName(), point.toString());//just for diagnostics
+ losAngeles.addStored(prefixGridStrategy.getFieldName() + "_stored", point.toString());//just for diagnostics
addDocumentsAndCommit(Arrays.asList(losAngeles));
Modified: lucene/dev/branches/lucene6005/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/branches/lucene6005/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Sun Dec 7 10:52:03 2014
@@ -94,9 +94,7 @@ import org.apache.lucene.util.RamUsageEs
* this suggester best applies when there is a strong
* a-priori ranking of all the suggestions.
*
- * <p>This suggester supports contexts, however the
- * contexts must be valid utf8 (arbitrary binary terms will
- * not work).
+ * <p>This suggester supports arbitrary binary contexts.
*
* @lucene.experimental */
@@ -328,9 +326,7 @@ public class AnalyzingInfixSuggester ext
}
if (contexts != null) {
for(BytesRef context : contexts) {
- // TODO: if we had a BinaryTermField we could fix
- // this "must be valid ut8f" limitation:
- doc.addAtom(CONTEXTS_FIELD_NAME, context.utf8ToString());
+ doc.addAtom(CONTEXTS_FIELD_NAME, context);
}
}
return doc;
@@ -485,7 +481,7 @@ public class AnalyzingInfixSuggester ext
// do not make a subquery if all context booleans are must not
if (allMustNot == true) {
for (Map.Entry<BytesRef, BooleanClause.Occur> entry : contextInfo.entrySet()) {
- query.add(new TermQuery(new Term(CONTEXTS_FIELD_NAME, entry.getKey().utf8ToString())), BooleanClause.Occur.MUST_NOT);
+ query.add(new TermQuery(new Term(CONTEXTS_FIELD_NAME, entry.getKey())), BooleanClause.Occur.MUST_NOT);
}
} else {
@@ -499,7 +495,7 @@ public class AnalyzingInfixSuggester ext
// TODO: if we had a BinaryTermField we could fix
// this "must be valid ut8f" limitation:
- sub.add(new TermQuery(new Term(CONTEXTS_FIELD_NAME, entry.getKey().utf8ToString())), entry.getValue());
+ sub.add(new TermQuery(new Term(CONTEXTS_FIELD_NAME, entry.getKey())), entry.getValue());
}
}
}
Modified: lucene/dev/branches/lucene6005/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java (original)
+++ lucene/dev/branches/lucene6005/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java Sun Dec 7 10:52:03 2014
@@ -882,10 +882,64 @@ public class AnalyzingInfixSuggesterTest
for(String value : values) {
result.add(new BytesRef(value));
}
+ return result;
+ }
+ private Set<BytesRef> asSet(byte[]... values) {
+ HashSet<BytesRef> result = new HashSet<>();
+ for(byte[] value : values) {
+ result.add(new BytesRef(value));
+ }
return result;
}
+ public void testBinaryContext() throws Exception {
+ Input keys[] = new Input[] {
+ new Input("lend me your ear", 8, new BytesRef("foobar"), asSet(new byte[1], new byte[4])),
+ new Input("a penny saved is a penny earned", 10, new BytesRef("foobaz"), asSet(new byte[1], new byte[3]))
+ };
+
+ Path tempDir = createTempDir();
+
+ for(int iter=0;iter<2;iter++) {
+ AnalyzingInfixSuggester suggester;
+ Analyzer a = new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false);
+ if (iter == 0) {
+ suggester = new AnalyzingInfixSuggester(newFSDirectory(tempDir), a, a, 3, false);
+ suggester.build(new InputArrayIterator(keys));
+ } else {
+ // Test again, after close/reopen:
+ suggester = new AnalyzingInfixSuggester(newFSDirectory(tempDir), a, a, 3, false);
+ }
+
+ // Both have new byte[1] context:
+ List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), asSet(new byte[1]), 10, true, true);
+ assertEquals(2, results.size());
+
+ LookupResult result = results.get(0);
+ assertEquals("a penny saved is a penny earned", result.key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", result.highlightKey);
+ assertEquals(10, result.value);
+ assertEquals(new BytesRef("foobaz"), result.payload);
+ assertNotNull(result.contexts);
+ assertEquals(2, result.contexts.size());
+ assertTrue(result.contexts.contains(new BytesRef(new byte[1])));
+ assertTrue(result.contexts.contains(new BytesRef(new byte[3])));
+
+ result = results.get(1);
+ assertEquals("lend me your ear", result.key);
+ assertEquals("lend me your <b>ear</b>", result.highlightKey);
+ assertEquals(8, result.value);
+ assertEquals(new BytesRef("foobar"), result.payload);
+ assertNotNull(result.contexts);
+ assertEquals(2, result.contexts.size());
+ assertTrue(result.contexts.contains(new BytesRef(new byte[1])));
+ assertTrue(result.contexts.contains(new BytesRef(new byte[4])));
+
+ suggester.close();
+ }
+ }
+
// LUCENE-5528
public void testBasicContext() throws Exception {
Input keys[] = new Input[] {
Modified: lucene/dev/branches/lucene6005/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java?rev=1643659&r1=1643658&r2=1643659&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java (original)
+++ lucene/dev/branches/lucene6005/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java Sun Dec 7 10:52:03 2014
@@ -35,8 +35,8 @@ import org.apache.lucene.codecs.StoredFi
import org.apache.lucene.codecs.simpletext.SimpleTextCodec;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.FieldTypes;
+import org.apache.lucene.search.ConstantScoreQuery;
import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
@@ -407,7 +407,7 @@ public abstract class BaseStoredFieldsFo
IndexWriterConfig iwConf = newIndexWriterConfig(new MockAnalyzer(random()));
iwConf.setMaxBufferedDocs(RandomInts.randomIntBetween(random(), 2, 30));
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwConf);
-
+ FieldTypes fieldTypes = iw.getFieldTypes();
final int docCount = atLeast(200);
final byte[][][] data = new byte [docCount][][];
for (int i = 0; i < docCount; ++i) {
@@ -448,7 +448,7 @@ public abstract class BaseStoredFieldsFo
for (int i = 0; i < 10; ++i) {
final int min = random().nextInt(data.length);
final int max = min + random().nextInt(20);
- iw.deleteDocuments(NumericRangeQuery.newIntRange("id", min, max, true, false));
+ iw.deleteDocuments(new ConstantScoreQuery(fieldTypes.newIntRangeFilter("id", min, true, max, false)));
}
iw.forceMerge(2); // force merges with deletions