You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/01/19 15:32:46 UTC
[37/38] lucene-solr:jira/solr-9857: LUCENE-7645: Use JDK's
Arrays.binarySearch in BaseCharFilter.
LUCENE-7645: Use JDK's Arrays.binarySearch in BaseCharFilter.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a14d7936
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a14d7936
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a14d7936
Branch: refs/heads/jira/solr-9857
Commit: a14d79366f97ffde61b56aee2e2d9123ccadc8a7
Parents: 85a05b5
Author: Adrien Grand <jp...@gmail.com>
Authored: Thu Jan 19 11:27:24 2017 +0100
Committer: Adrien Grand <jp...@gmail.com>
Committed: Thu Jan 19 11:27:24 2017 +0100
----------------------------------------------------------------------
.../analysis/charfilter/BaseCharFilter.java | 26 +++++---------------
1 file changed, 6 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a14d7936/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/BaseCharFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/BaseCharFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/BaseCharFilter.java
index 48ffa48..4fba9fe 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/BaseCharFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/BaseCharFilter.java
@@ -41,31 +41,17 @@ public abstract class BaseCharFilter extends CharFilter {
/** Retrieve the corrected offset. */
@Override
protected int correct(int currentOff) {
- if (offsets == null || currentOff < offsets[0]) {
+ if (offsets == null) {
return currentOff;
}
-
- int hi = size - 1;
- if(currentOff >= offsets[hi])
- return currentOff + diffs[hi];
- int lo = 0;
- int mid = -1;
-
- while (hi >= lo) {
- mid = (lo + hi) >>> 1;
- if (currentOff < offsets[mid])
- hi = mid - 1;
- else if (currentOff > offsets[mid])
- lo = mid + 1;
- else
- return currentOff + diffs[mid];
+ int index = Arrays.binarySearch(offsets, 0, size, currentOff);
+ if (index < -1) {
+ index = -2 - index;
}
- if (currentOff < offsets[mid])
- return mid == 0 ? currentOff : currentOff + diffs[mid-1];
- else
- return currentOff + diffs[mid];
+ final int diff = index < 0 ? 0 : diffs[index];
+ return currentOff + diff;
}
protected int getLastCumulativeDiff() {