You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ds...@apache.org on 2019/09/26 19:56:49 UTC
[lucene-solr] branch master updated: LUCENE-8980: Blocktree
seekExact now checks min-max range of the segment
This is an automated email from the ASF dual-hosted git repository.
dsmiley 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 99f4cec LUCENE-8980: Blocktree seekExact now checks min-max range of the segment
99f4cec is described below
commit 99f4cec459177caeb16644e4592d807d125c1613
Author: johngqjiang <jo...@tencent.com>
AuthorDate: Thu Sep 26 15:57:22 2019 -0400
LUCENE-8980: Blocktree seekExact now checks min-max range of the segment
---
lucene/CHANGES.txt | 3 +++
.../src/java/org/apache/lucene/codecs/blocktree/SegmentTermsEnum.java | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index cb969eb..456843d 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -160,6 +160,9 @@ the total hits is not requested.
* LUCENE-8939: Introduce shared count based early termination across multiple slices
(Atri Sharma)
+* LUCENE-8980: Blocktree's seekExact now short-circuits false if the term isn't in the min-max range of the segment.
+ Large perf gain for ID/time like data when populated sequentially. (Guoqiang Jiang)
+
Bug Fixes
* LUCENE-8755: spatial-extras quad and packed quad prefix trees could throw a
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/blocktree/SegmentTermsEnum.java b/lucene/core/src/java/org/apache/lucene/codecs/blocktree/SegmentTermsEnum.java
index 92888d0..587aaeb 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/blocktree/SegmentTermsEnum.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/blocktree/SegmentTermsEnum.java
@@ -321,6 +321,10 @@ final class SegmentTermsEnum extends BaseTermsEnum {
throw new IllegalStateException("terms index was not loaded");
}
+ if (fr.size() > 0 && (target.compareTo(fr.getMin()) < 0 || target.compareTo(fr.getMax()) > 0)) {
+ return false;
+ }
+
term.grow(1 + target.length);
assert clearEOF();