Skip to content

Commit ae19802

Browse files
authored
Fix highlighter support in PinnedQuery and added test (#53716) (#53729)
CappedScoreQuery was not delegating queryVisitor calls Closes #53699
1 parent df0ad75 commit ae19802

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;
@@ -197,5 +200,29 @@ public void testExplain() throws Exception {
197200

198201

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

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

0 commit comments

Comments
 (0)