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 2013/08/29 19:42:12 UTC
svn commit: r1518721 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/core/ lucene/core/src/test/org/apache/lucene/index/ lucene/facet/
lucene/facet/src/java/org/apache/lucene/facet/range/
lucene/facet/src/test/org/apache/lucene/facet/range/
Author: mikemccand
Date: Thu Aug 29 17:42:11 2013
New Revision: 1518721
URL: http://svn.apache.org/r1518721
Log:
LUCENE-5194: fix 41 test indices to not use PulsingPostingsFormat
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.41.cfs.zip
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.41.nocfs.zip
lucene/dev/branches/branch_4x/lucene/facet/ (props changed)
lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/range/RangeAccumulator.java
lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.41.cfs.zip
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.41.cfs.zip?rev=1518721&r1=1518720&r2=1518721&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.41.nocfs.zip
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.41.nocfs.zip?rev=1518721&r1=1518720&r2=1518721&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/range/RangeAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/range/RangeAccumulator.java?rev=1518721&r1=1518720&r2=1518721&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/range/RangeAccumulator.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/range/RangeAccumulator.java Thu Aug 29 17:42:11 2013
@@ -30,6 +30,7 @@ import org.apache.lucene.facet.search.Fa
import org.apache.lucene.facet.search.FacetsCollector.MatchingDocs;
import org.apache.lucene.facet.taxonomy.CategoryPath;
import org.apache.lucene.index.NumericDocValues;
+import org.apache.lucene.util.Bits;
/** Uses a {@link NumericDocValues} and accumulates
* counts for provided ranges. This is dynamic (does not
@@ -86,10 +87,19 @@ public class RangeAccumulator extends Fa
if (ndv == null) {
continue; // no numeric values for this field in this reader
}
+ Bits docsWithField = hits.context.reader().getDocsWithField(ranges.field);
+
final int length = hits.bits.length();
int doc = 0;
while (doc < length && (doc = hits.bits.nextSetBit(doc)) != -1) {
long v = ndv.get(doc);
+
+ // Skip missing docs:
+ if (v == 0 && docsWithField.get(doc) == false) {
+ doc++;
+ continue;
+ }
+
// TODO: if all ranges are non-overlapping, we
// should instead do a bin-search up front
// (really, a specialized case of the interval
Modified: lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java?rev=1518721&r1=1518720&r2=1518721&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java Thu Aug 29 17:42:11 2013
@@ -632,5 +632,44 @@ public class TestRangeAccumulator extend
r.close();
dir.close();
}
-}
+ // LUCENE-5178
+ public void testMissingValues() throws Exception {
+ assumeTrue("codec does not support docsWithField", defaultCodecSupportsDocsWithField());
+ Directory d = newDirectory();
+ RandomIndexWriter w = new RandomIndexWriter(random(), d);
+ Document doc = new Document();
+ NumericDocValuesField field = new NumericDocValuesField("field", 0L);
+ doc.add(field);
+ for(long l=0;l<100;l++) {
+ if (l % 5 == 0) {
+ // Every 5th doc is missing the value:
+ w.addDocument(new Document());
+ continue;
+ }
+ field.setLongValue(l);
+ w.addDocument(doc);
+ }
+
+ IndexReader r = w.getReader();
+ w.close();
+
+ RangeAccumulator a = new RangeAccumulator(new RangeFacetRequest<LongRange>("field",
+ new LongRange("less than 10", 0L, true, 10L, false),
+ new LongRange("less than or equal to 10", 0L, true, 10L, true),
+ new LongRange("over 90", 90L, false, 100L, false),
+ new LongRange("90 or above", 90L, true, 100L, false),
+ new LongRange("over 1000", 1000L, false, Long.MAX_VALUE, false)));
+
+ FacetsCollector fc = FacetsCollector.create(a);
+
+ IndexSearcher s = newSearcher(r);
+ s.search(new MatchAllDocsQuery(), fc);
+ List<FacetResult> result = fc.getFacetResults();
+ assertEquals(1, result.size());
+ assertEquals("field (0)\n less than 10 (8)\n less than or equal to 10 (8)\n over 90 (8)\n 90 or above (8)\n over 1000 (0)\n", FacetTestUtils.toSimpleString(result.get(0)));
+
+ r.close();
+ d.close();
+ }
+}