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