You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mk...@apache.org on 2019/02/26 20:39:17 UTC

[lucene-solr] branch master updated: SOLR-13227: don't throw exceptions for counting facet.range.other.

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

mkhl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 58beaeb  SOLR-13227: don't throw exceptions for counting facet.range.other.
58beaeb is described below

commit 58beaeb74d784b74e29b0d13845cd6e82a7b46b9
Author: Mikhail Khludnev <mk...@apache.org>
AuthorDate: Tue Feb 26 23:38:28 2019 +0300

    SOLR-13227: don't throw exceptions for counting facet.range.other.
---
 solr/CHANGES.txt                                   |  2 +
 .../handler/component/RangeFacetProcessor.java     | 48 ++++++++++------------
 2 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 74cc944..ca510ca 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -86,6 +86,8 @@ Improvements
 
 * SOLR-12121: JWT Token authentication plugin with OpenID Connect implicit flow login through Admin UI (janhoy)
 
+* SOLR-13227: Optimizing facet.range.other by avoiding expensive exceptions (Nikolay Khitrin via Mikhail Khludnev)
+
 Other Changes
 ----------------------
 
diff --git a/solr/core/src/java/org/apache/solr/handler/component/RangeFacetProcessor.java b/solr/core/src/java/org/apache/solr/handler/component/RangeFacetProcessor.java
index 6f2fc26..d81bc9e 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/RangeFacetProcessor.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/RangeFacetProcessor.java
@@ -178,35 +178,29 @@ public class RangeFacetProcessor extends SimpleFacets {
     IntervalFacets.FacetInterval after = null;
 
     for (RangeFacetRequest.FacetRange range : rfr.getFacetRanges()) {
-      try {
-        FacetRangeOther other = FacetRangeOther.get(range.name);
-        if (other != null) {
-          switch (other) {
-            case BEFORE:
-              assert range.lower == null;
-              intervals.set(0, new IntervalFacets.FacetInterval(sf, "*", range.upper, range.includeLower,
-                  range.includeUpper, FacetRangeOther.BEFORE.toString()));
-              break;
-            case AFTER:
-              assert range.upper == null;
-              after = new IntervalFacets.FacetInterval(sf, range.lower, "*",
-                  range.includeLower, range.includeUpper, FacetRangeOther.AFTER.toString());
-              break;
-            case BETWEEN:
-              intervals.set(includeBefore ? 1 : 0, new IntervalFacets.FacetInterval(sf, range.lower, range.upper,
-                  range.includeLower, range.includeUpper, FacetRangeOther.BETWEEN.toString()));
-              break;
-            case ALL:
-            case NONE:
-              break;
-          }
+      if (range.other != null) {
+        switch (range.other) {
+          case BEFORE:
+            assert range.lower == null;
+            intervals.set(0, new IntervalFacets.FacetInterval(sf, "*", range.upper, range.includeLower,
+                range.includeUpper, FacetRangeOther.BEFORE.toString()));
+            break;
+          case AFTER:
+            assert range.upper == null;
+            after = new IntervalFacets.FacetInterval(sf, range.lower, "*",
+                range.includeLower, range.includeUpper, FacetRangeOther.AFTER.toString());
+            break;
+          case BETWEEN:
+            intervals.set(includeBefore ? 1 : 0, new IntervalFacets.FacetInterval(sf, range.lower, range.upper,
+                range.includeLower, range.includeUpper, FacetRangeOther.BETWEEN.toString()));
+            break;
+          case ALL:
+          case NONE:
+            break;
         }
-        continue;
-      } catch (SolrException e) {
-        // safe to ignore
+      } else {
+        intervals.add(new IntervalFacets.FacetInterval(sf, range.lower, range.upper, range.includeLower, range.includeUpper, range.lower));
       }
-
-      intervals.add(new IntervalFacets.FacetInterval(sf, range.lower, range.upper, range.includeLower, range.includeUpper, range.lower));
     }
 
     if (includeAfter) {