elasticsearch中高亮的部分知识fragmentSize,numOfFragments,noMatchSize

现在我这里有两个文档内容如下,都是自己随便复制下来做测试的
这是第一个文档:
在这里插入图片描述
这是第二个文档:

在这里插入图片描述
这是我做的测试:

@Test
public void essearchAl88() throws UnknownHostException {
Settings settings=Settings.builder().put(“cluster.name”, “cluster-elasticsearch-prod”).build();
TransportClient client=new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(“192.168.1.109”), 9300));
String filekeyword=“编码心情”;
BoolQueryBuilder builder = QueryBuilders.boolQuery().should(QueryBuilders.multiMatchQuery(filekeyword, “FileName”)).should(QueryBuilders.multiMatchQuery(filekeyword, “User_ID”)).should(QueryBuilders.multiMatchQuery(filekeyword, “attachment.content”));
HighlightBuilder field = new HighlightBuilder().field(“FileName”).field(“User_ID”).field(“attachment.content”).fragmentSize(10).numOfFragments(3).noMatchSize(150);
SearchResponse response=client.prepareSearch(“tgdsm”)
.setTypes(“fileinfo”)
.highlighter(field)
.setQuery(builder)
.get();
SearchHits hits = response.getHits();
for (SearchHit searchHit : hits) {
Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
HighlightField highlightField1 = highlightFields.get(“FileName”);
if(highlightField1!=null) {
Text[] fragments1 = highlightField1.getFragments();
for (Text text : fragments1) {
System.out.println(“1”+text);
}
}
HighlightField highlightField2 = highlightFields.get(“User_ID”);
if(highlightField2!=null) {
Text[] fragments2 = highlightField2.getFragments();
for (Text text : fragments2) {
System.out.println(“2”+text);
}
}
HighlightField highlightField3 = highlightFields.get(“attachment.content”);
if(highlightField3!=null) {
Text[] fragments3 = highlightField3.getFragments();
for (Text text : fragments3) {
System.out.println(“3”+text);
}
}
System.out.println("----------------------------------");
}
}
这是测试的图片进行标注下
在这里插入图片描述
下面是具体的设置这几个属性显示的情况:
第一种情况没有设置 默认的情况
在这里插入图片描述
它显示的结果是,搜索出有关键字的字段高亮后,其他字段没有任何显示
在这里插入图片描述
第二种情况:将fragmentSize设置为10
在这里插入图片描述
之后的显示,长度变小
在这里插入图片描述
第三种情况:把numOfFragments设置为1
在这里插入图片描述
结果就只有一个片段了:

在这里插入图片描述
第四种情况:将noMatchSize设置进来
在这里插入图片描述
在这里插入图片描述
其他没有高亮的字段也一并显示出来了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Java 使用 Elasticsearch 进行高亮可以通过使用 HighlightBuilder 类来实现。下面是一个简单的示例代码: ```java SearchRequest searchRequest = new SearchRequest("index_name"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("field_name", "search_text"); searchSourceBuilder.query(matchQueryBuilder); HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.field("field_name"); highlightBuilder.requireFieldMatch(false); highlightBuilder.preTags("<em>"); highlightBuilder.postTags("</em>"); searchSourceBuilder.highlighter(highlightBuilder); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); for (SearchHit hit : hits) { Map<String, HighlightField> highlightFields = hit.getHighlightFields(); HighlightField highlight = highlightFields.get("field_name"); Text[] fragments = highlight.fragments(); String fragmentString = fragments[0].string(); System.out.println(fragmentString); } ``` 在上面的代码,`SearchRequest` 和 `SearchSourceBuilder` 用于构建搜索请求,`MatchQueryBuilder` 用于设置要搜索的字段及搜索文本。`HighlightBuilder` 用于设置高亮的字段,以及前置和后置标记。最后,调用 `client.search()` 方法执行搜索请求,返回 `SearchResponse` 对象,从可以获取高亮结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值