Skip to content

Commit 2d8c6dd

Browse files
committed
Add unit test & address comments
Signed-off-by: sjs004 <simarjeet.singh004@gmail.com>
1 parent f9c5939 commit 2d8c6dd

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

server/src/main/java/org/opensearch/lucene/search/uhighlight/CustomUnifiedHighlighter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,7 @@ protected Collection<Query> preSpanQueryRewrite(Query query) {
229229
* Translate custom queries in queries that are supported by the unified highlighter.
230230
*/
231231
private Collection<Query> rewriteCustomQuery(Query query) {
232-
if (query instanceof MultiPhrasePrefixQuery) {
233-
MultiPhrasePrefixQuery mpq = (MultiPhrasePrefixQuery) query;
232+
if (query instanceof MultiPhrasePrefixQuery mpq) {
234233
Term[][] terms = mpq.getTerms();
235234
int[] positions = mpq.getPositions();
236235
SpanQuery[] positionSpanQueries = new SpanQuery[positions.length];
@@ -263,13 +262,14 @@ private Collection<Query> rewriteCustomQuery(Query query) {
263262
// if original slop is 0 then require inOrder
264263
boolean inorder = (mpq.getSlop() == 0);
265264
return Collections.singletonList(new SpanNearQuery(positionSpanQueries, mpq.getSlop() + positionGaps, inorder));
266-
} else if (query instanceof OpenSearchToParentBlockJoinQuery) {
267-
return Collections.singletonList(((OpenSearchToParentBlockJoinQuery) query).getChildQuery());
265+
} else if (query instanceof OpenSearchToParentBlockJoinQuery parentQuery) {
266+
return Collections.singletonList(parentQuery.getChildQuery());
268267
} else {
269268
return null;
270269
}
271270
}
272271

272+
273273
/**
274274
* Forces the offset source for this highlighter
275275
*/

server/src/test/java/org/opensearch/lucene/search/uhighlight/CustomUnifiedHighlighterTests.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.apache.lucene.index.IndexOptions;
4545
import org.apache.lucene.index.IndexWriterConfig;
4646
import org.apache.lucene.index.Term;
47+
import org.apache.lucene.index.LeafReaderContext;
4748
import org.apache.lucene.queries.CommonTermsQuery;
4849
import org.apache.lucene.search.BooleanClause;
4950
import org.apache.lucene.search.BooleanQuery;
@@ -56,13 +57,19 @@
5657
import org.apache.lucene.search.TermQuery;
5758
import org.apache.lucene.search.TopDocs;
5859
import org.apache.lucene.search.highlight.DefaultEncoder;
60+
import org.apache.lucene.search.join.BitSetProducer;
61+
import org.apache.lucene.search.join.ScoreMode;
5962
import org.apache.lucene.search.uhighlight.UnifiedHighlighter;
6063
import org.apache.lucene.store.Directory;
6164
import org.apache.lucene.tests.index.RandomIndexWriter;
65+
import org.apache.lucene.util.BitSet;
66+
import org.apache.lucene.util.FixedBitSet;
6267
import org.opensearch.common.lucene.search.MultiPhrasePrefixQuery;
6368
import org.opensearch.core.common.Strings;
69+
import org.opensearch.index.search.OpenSearchToParentBlockJoinQuery;
6470
import org.opensearch.test.OpenSearchTestCase;
6571

72+
import java.io.IOException;
6673
import java.text.BreakIterator;
6774
import java.util.Locale;
6875

@@ -335,4 +342,34 @@ public void testOverlappingTerms() throws Exception {
335342
assertHighlightOneDoc("text", inputs, analyzer, query, Locale.ROOT, BreakIterator.getSentenceInstance(Locale.ROOT), 0, outputs);
336343
}
337344

345+
public void testOpenSearchToParentBlockJoinQuery() throws Exception {
346+
final String[] inputs = { "Nested highlighting query." };
347+
final String[] outputs = { "Nested <b>highlighting</b> query." };
348+
349+
Query childQuery = new TermQuery(new Term("text", "highlighting"));
350+
BitSetProducer parentsFilter = new BitSetProducer() {
351+
@Override
352+
public BitSet getBitSet(LeafReaderContext context) throws IOException {
353+
FixedBitSet bits = new FixedBitSet(context.reader().maxDoc());
354+
for (int i = 0; i < context.reader().maxDoc(); i++) {
355+
bits.set(i);
356+
}
357+
return bits;
358+
}
359+
};
360+
361+
Query parentQuery = new OpenSearchToParentBlockJoinQuery(childQuery, parentsFilter, ScoreMode.None, "foo");
362+
assertHighlightOneDoc(
363+
"text",
364+
inputs,
365+
new StandardAnalyzer(),
366+
parentQuery,
367+
Locale.ROOT,
368+
BreakIterator.getSentenceInstance(Locale.ROOT),
369+
0,
370+
outputs
371+
);
372+
}
373+
374+
338375
}

0 commit comments

Comments
 (0)