Manybubbles has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/135021

Change subject: Fix MultiSegmenter when the offset gap is 0
......................................................................

Fix MultiSegmenter when the offset gap is 0

This is pretty rare, but the randomized testing found it with at seed
4AB348D5E736BE9E:9930CF61AD110AEF.

Change-Id: I2e40040677edde2893a8b7a0f869162ea2634d30
---
M 
experimental-highlighter-core/src/main/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenter.java
M 
experimental-highlighter-core/src/test/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenterTest.java
2 files changed, 7 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/search/highlighter 
refs/changes/21/135021/1

diff --git 
a/experimental-highlighter-core/src/main/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenter.java
 
b/experimental-highlighter-core/src/main/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenter.java
index 0dbda69..72289d4 100644
--- 
a/experimental-highlighter-core/src/main/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenter.java
+++ 
b/experimental-highlighter-core/src/main/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenter.java
@@ -161,7 +161,10 @@
         if (inSegmenterStartOffset < 0) {
             return findSegmenterBackwards();
         }
-        assert segmenter != null;
+        if (segmenter == null) {
+            // Can happen if the first request didn't find anything.
+            return false;
+        }
         if (inSegmenterStartOffset >= segmenter.length) {
             inSegmenterStartOffset -= segmenter.length + offsetGap;
             lastStartOffset += segmenter.length + offsetGap;
diff --git 
a/experimental-highlighter-core/src/test/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenterTest.java
 
b/experimental-highlighter-core/src/test/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenterTest.java
index ac77b06..00d7e53 100644
--- 
a/experimental-highlighter-core/src/test/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenterTest.java
+++ 
b/experimental-highlighter-core/src/test/java/org/wikimedia/search/highlighter/experimental/snippet/MultiSegmenterTest.java
@@ -7,8 +7,6 @@
 import org.junit.runner.RunWith;
 import org.wikimedia.search.highlighter.experimental.Segmenter;
 import org.wikimedia.search.highlighter.experimental.SourceExtracter;
-import 
org.wikimedia.search.highlighter.experimental.snippet.CharScanningSegmenter;
-import org.wikimedia.search.highlighter.experimental.snippet.MultiSegmenter;
 import 
org.wikimedia.search.highlighter.experimental.source.StringMergingMultiSourceExtracter;
 import 
org.wikimedia.search.highlighter.experimental.source.StringSourceExtracter;
 
@@ -59,7 +57,9 @@
         assertTrue(segmenter.acceptable(offsetGap * 3, offsetGap * 3 + 1));
         assertThat(segmenter.memo(offsetGap * 3, offsetGap * 3 + 1)
                 .pickBounds(0, Integer.MAX_VALUE), extracted(extracter, 
equalTo("a")));
-        assertFalse(segmenter.acceptable(0, 1));
+        if (offsetGap > 0) {
+            assertFalse(segmenter.acceptable(0, 1));
+        }
         assertFalse(segmenter.acceptable(offsetGap * 3, offsetGap * 3 + 3));
     }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/135021
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2e40040677edde2893a8b7a0f869162ea2634d30
Gerrit-PatchSet: 1
Gerrit-Project: search/highlighter
Gerrit-Branch: master
Gerrit-Owner: Manybubbles <never...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to