From e72d796e9624073f2cab6584e00af2fd5e180540 Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Fri, 4 Feb 2022 15:27:03 +0000 Subject: [PATCH] LUCENE-10402: Prefix interval automaton should be declared binary (#646) --- .../org/apache/lucene/queries/intervals/Intervals.java | 2 +- .../lucene/queries/intervals/TestIntervalQuery.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lucene/queries/src/java/org/apache/lucene/queries/intervals/Intervals.java b/lucene/queries/src/java/org/apache/lucene/queries/intervals/Intervals.java index 4c1ec48d4d3..0e6e967197a 100644 --- a/lucene/queries/src/java/org/apache/lucene/queries/intervals/Intervals.java +++ b/lucene/queries/src/java/org/apache/lucene/queries/intervals/Intervals.java @@ -158,7 +158,7 @@ public final class Intervals { * @throws IllegalStateException if the prefix expands to more than {@code maxExpansions} terms */ public static IntervalsSource prefix(BytesRef prefix, int maxExpansions) { - CompiledAutomaton ca = new CompiledAutomaton(PrefixQuery.toAutomaton(prefix)); + CompiledAutomaton ca = new CompiledAutomaton(PrefixQuery.toAutomaton(prefix), null, true, true); return new MultiTermIntervalsSource(ca, maxExpansions, prefix.utf8ToString() + "*"); } diff --git a/lucene/queries/src/test/org/apache/lucene/queries/intervals/TestIntervalQuery.java b/lucene/queries/src/test/org/apache/lucene/queries/intervals/TestIntervalQuery.java index ddd29887ebf..190b4a16c24 100644 --- a/lucene/queries/src/test/org/apache/lucene/queries/intervals/TestIntervalQuery.java +++ b/lucene/queries/src/test/org/apache/lucene/queries/intervals/TestIntervalQuery.java @@ -31,6 +31,7 @@ import org.apache.lucene.tests.analysis.MockAnalyzer; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.tests.search.CheckHits; import org.apache.lucene.tests.util.LuceneTestCase; +import org.apache.lucene.util.BytesRef; public class TestIntervalQuery extends LuceneTestCase { @@ -77,7 +78,8 @@ public class TestIntervalQuery extends LuceneTestCase { "coordinate genome research", "greater new york", "x x x x x intend x x x message x x x message x x x addressed x x", - "issue with intervals queries from search engine. So it's a big issue for us as we need to do ordered searches. Thank you to help us concerning that issue" + "issue with intervals queries from search engine. So it's a big issue for us as we need to do ordered searches. Thank you to help us concerning that issue", + "場外好朋友" }; private void checkHits(Query query, int[] results) throws IOException { @@ -416,4 +418,9 @@ public class TestIntervalQuery extends LuceneTestCase { field, Intervals.containing(Intervals.term("w1"), new OneTimeIntervalSource())); checkHits(q, new int[] {0, 1, 2, 3}); } + + public void testUnicodePrefix() throws IOException { + Query q = new IntervalQuery(field, Intervals.prefix(new BytesRef("場"))); + checkHits(q, new int[] {11}); + } }