Skip to content

Commit 9f0562b

Browse files
authored
Fix highlighter support in PinnedQuery and added test (#53716)
Closes #53699
1 parent 6b5fc35 commit 9f0562b

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

x-pack/plugin/search-business-rules/src/main/java/org/apache/lucene/search/CappedScoreQuery.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ public Query getQuery() {
3333
return query;
3434
}
3535

36+
@Override
37+
public void visit(QueryVisitor visitor) {
38+
query.visit(visitor.getSubVisitor(BooleanClause.Occur.MUST, this));
39+
}
40+
3641
@Override
3742
public Query rewrite(IndexReader reader) throws IOException {
3843
Query rewritten = query.rewrite(reader);

x-pack/plugin/search-business-rules/src/test/java/org/elasticsearch/xpack/searchbusinessrules/PinnedQueryBuilderIT.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@
1717
import org.elasticsearch.index.query.QueryStringQueryBuilder;
1818
import org.elasticsearch.plugins.Plugin;
1919
import org.elasticsearch.search.SearchHit;
20+
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
21+
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
2022
import org.elasticsearch.test.ESIntegTestCase;
2123

2224
import java.util.ArrayList;
2325
import java.util.Collection;
2426
import java.util.LinkedHashSet;
2527
import java.util.List;
28+
import java.util.Map;
2629

2730
import static org.elasticsearch.action.search.SearchType.DFS_QUERY_THEN_FETCH;
2831
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
@@ -196,5 +199,29 @@ public void testExplain() throws Exception {
196199

197200

198201
}
202+
203+
public void testHighlight() throws Exception {
204+
// Issue raised in https://github.com/elastic/elasticsearch/issues/53699
205+
assertAcked(prepareCreate("test").setMapping(
206+
jsonBuilder().startObject().startObject("_doc").startObject("properties").startObject("field1")
207+
.field("analyzer", "whitespace").field("type", "text").endObject().endObject().endObject().endObject()));
208+
ensureGreen();
209+
client().prepareIndex("test").setId("1").setSource("field1", "the quick brown fox").get();
210+
refresh();
211+
212+
PinnedQueryBuilder pqb = new PinnedQueryBuilder(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR), "2");
213+
214+
HighlightBuilder testHighlighter = new HighlightBuilder();
215+
testHighlighter.field("field1");
199216

217+
SearchResponse searchResponse = client().prepareSearch().setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(pqb)
218+
.highlighter(testHighlighter)
219+
.setExplain(true).get();
220+
assertHitCount(searchResponse, 1);
221+
Map<String, HighlightField> highlights = searchResponse.getHits().getHits()[0].getHighlightFields();
222+
assertThat(highlights.size(), equalTo(1));
223+
HighlightField highlight = highlights.get("field1");
224+
assertThat(highlight.fragments()[0].toString(), equalTo("<em>the</em> <em>quick</em> <em>brown</em> fox"));
225+
}
200226
}
227+

0 commit comments

Comments
 (0)