[英]How to get Elasticsearch 5.2.2 search highlighting working with Java API
使Elasticsearch Java API返回搜索突出顯示需要什么?
我用來構造查詢的代碼類似於以下內容:
final HighlightBuilder highlight = new HighlightBuilder()
.field("*")
.highlighterType("fvh");
final SearchRequestBuilder request = client.prepareSearch()
.setTypes("mytype")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(query)
.setFrom(currentPage)
.setSize(perPage)
.highlighter(highlight)
.addSort(orderBy.getValue(), sortOrder);
轉儲查詢看起來像這樣:
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"must" : [
{
"terms" : {
"my.field" : [
"myvalue"
],
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"sort" : [
{
"myotherfield1.myotherfield2.myotherfield3" : {
"order" : "desc"
}
}
],
"highlight" : {
"type" : "fvh",
"fields" : {
"*" : { }
}
}
}
我得到結果,但每次點擊的.getHighlightFields()
方法返回一個空地圖。
這似乎有效。 需要單獨選擇字段,而不是使用'_all':
for(String fieldName : allFields){
query.should(QueryBuilders.matchPhrasePrefixQuery(fieldName, queryText));
}
query.minimumShouldMatch(1);
final HighlightBuilder highlight = new HighlightBuilder()
.highlighterType("plain")
.preTags("")
.postTags("");
for(String fieldName : allSearchFields) {
highlight.field(fieldName);
}
final SearchRequestBuilder request = client.prepareSearch()
.setTypes("mytype")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(query)
.setFrom(currentPage)
.setSize(perPage)
.highlighter(highlight)
.addSort(orderBy.getValue(), sortOrder);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.