elastic搜索的时候,对于过长的string字段不希望全部返回,而是只返回部分应该怎么做?
@纳兰琴 你好,想跟你请教个问题:
搜索的时候采用的是multi_match的best_fields方式,发现排第50左右的文档,已经不是title和body都能包含用来检索的关键字了,下面的做法,highlight对于不包含关键字的字段不予返回。但是仍然希望body能够返回部分内容,可以是body的头100个字符。应该怎么做?
下面是搜索部分的代码。
MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("sift 集群", "title^3", "body", "tag^2", "category^2") .type("best_fields") .tieBreaker((float) 0.3) .minimumShouldMatch("75%"); SearchResponse sr; SearchRequestBuilder srb; srb = client.prepareSearch("blog_v1") .setTypes("blogpost") .setFrom(100) .setSize(10) .setQuery(mmqb) .addFields("tag","category","url","title") .setHighlighterNoMatchSize(80) .setHighlighterPreTags("<em>") .setHighlighterPostTags("</em>") .addHighlightedField("title", 32) .addHighlightedField("body", 80); sr = srb.get();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
判断HighlightField是否为空,如果不为空,从高亮片段中取出高亮的数据,否则从_source取数据