elastic搜索的时候,对于过长的string字段不希望全部返回,而是只返回部分应该怎么做?

发布于 2021-11-30 21:54:54 字数 1386 浏览 787 评论 1

@纳兰琴 你好,想跟你请教个问题:

搜索的时候采用的是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无声静候 2021-12-01 06:32:08

判断HighlightField是否为空,如果不为空,从高亮片段中取出高亮的数据,否则从_source取数据

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文