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) {