@Test public void testFieldCacheRangeFilterFloats() throws IOException { IndexReader reader = signedIndexReader; IndexSearcher search = newSearcher(reader); int numDocs = reader.numDocs(); Float minIdO = Float.valueOf(minId + .5f); Float medIdO = Float.valueOf(minIdO.floatValue() + ((maxId - minId)) / 2.0f); ScoreDoc[] result; Query q = new TermQuery(new Term("body", "body")); result = search.search( q, FieldCacheRangeFilter.newFloatRange("id_float", minIdO, medIdO, T, T), numDocs) .scoreDocs; assertEquals("find all", numDocs / 2, result.length); int count = 0; result = search.search( q, FieldCacheRangeFilter.newFloatRange("id_float", null, medIdO, F, T), numDocs) .scoreDocs; count += result.length; result = search.search( q, FieldCacheRangeFilter.newFloatRange("id_float", medIdO, null, F, F), numDocs) .scoreDocs; count += result.length; assertEquals("sum of two concenatted ranges", numDocs, count); result = search.search(q, FieldCacheRangeFilter.newFloatRange("id_float", null, null, T, T), numDocs) .scoreDocs; assertEquals("find all", numDocs, result.length); result = search.search( q, FieldCacheRangeFilter.newFloatRange( "id_float", Float.valueOf(Float.POSITIVE_INFINITY), null, F, F), numDocs) .scoreDocs; assertEquals("infinity special case", 0, result.length); result = search.search( q, FieldCacheRangeFilter.newFloatRange( "id_float", null, Float.valueOf(Float.NEGATIVE_INFINITY), F, F), numDocs) .scoreDocs; assertEquals("infinity special case", 0, result.length); }