From 3037e33025f79b93e0f100f851155be23eda96ee Mon Sep 17 00:00:00 2001 From: Greg Miller Date: Fri, 6 Aug 2021 12:57:09 -0700 Subject: [PATCH] Slight improvement/optimization to duplicate facet value checking (ref: LUCENE-9964) (#234) --- .../apache/lucene/facet/LongValueFacetCounts.java | 12 ++++++------ .../apache/lucene/facet/range/RangeFacetCounts.java | 7 ++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lucene/facet/src/java/org/apache/lucene/facet/LongValueFacetCounts.java b/lucene/facet/src/java/org/apache/lucene/facet/LongValueFacetCounts.java index 71ec7cad883..864e2265cf2 100644 --- a/lucene/facet/src/java/org/apache/lucene/facet/LongValueFacetCounts.java +++ b/lucene/facet/src/java/org/apache/lucene/facet/LongValueFacetCounts.java @@ -162,14 +162,14 @@ public class LongValueFacetCounts extends Facets { if (limit > 0) { totCount++; } - long previousValue = 0; + long previousValue = -1; for (int i = 0; i < limit; i++) { long value = multiValues.nextValue(); // do not increment the count for duplicate values - if (i == 0 || value != previousValue) { + if (value != previousValue) { increment(value); + previousValue = value; } - previousValue = value; } } } @@ -214,14 +214,14 @@ public class LongValueFacetCounts extends Facets { if (limit > 0) { totCount++; } - long previousValue = 0; + long previousValue = -1; for (int i = 0; i < limit; i++) { long value = multiValues.nextValue(); // do not increment the count for duplicate values - if (i == 0 || value != previousValue) { + if (value != previousValue) { increment(value); + previousValue = value; } - previousValue = value; } } } diff --git a/lucene/facet/src/java/org/apache/lucene/facet/range/RangeFacetCounts.java b/lucene/facet/src/java/org/apache/lucene/facet/range/RangeFacetCounts.java index 29461f01cf0..3f56c78fa3a 100644 --- a/lucene/facet/src/java/org/apache/lucene/facet/range/RangeFacetCounts.java +++ b/lucene/facet/src/java/org/apache/lucene/facet/range/RangeFacetCounts.java @@ -193,8 +193,13 @@ abstract class RangeFacetCounts extends Facets { totCount++; } else { counter.startMultiValuedDoc(); + long previous = -1; for (int j = 0; j < limit; j++) { - counter.addMultiValued(mapDocValue(multiValues.nextValue())); + long val = mapDocValue(multiValues.nextValue()); + if (val != previous) { + counter.addMultiValued(val); + previous = val; + } } if (counter.endMultiValuedDoc()) { totCount++;