You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by gs...@apache.org on 2021/08/06 19:57:16 UTC

[lucene] branch main updated: Slight improvement/optimization to duplicate facet value checking (ref: LUCENE-9964) (#234)

This is an automated email from the ASF dual-hosted git repository.

gsmiller pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/main by this push:
     new 3037e33  Slight improvement/optimization to duplicate facet value checking (ref: LUCENE-9964) (#234)
3037e33 is described below

commit 3037e33025f79b93e0f100f851155be23eda96ee
Author: Greg Miller <gs...@gmail.com>
AuthorDate: Fri Aug 6 12:57:09 2021 -0700

    Slight improvement/optimization to duplicate facet value checking (ref: LUCENE-9964) (#234)
---
 .../java/org/apache/lucene/facet/LongValueFacetCounts.java   | 12 ++++++------
 .../java/org/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 71ec7ca..864e226 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 29461f0..3f56c78 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++;