spring boot es 支持中文精准查询的方法QueryBuilders.termQuery

这篇具有很好参考价值的文章主要介绍了spring boot es 支持中文精准查询的方法QueryBuilders.termQuery。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,问题:

当我们使用QueryBuilders.termQuery方法对指定的字段进行精准查询时,如果查询的条件为英文字母时,是没有问题的

当查询条件为中文时,则可能会查询不出数据,如下:当algorithmTag为中文时,即使es中有对应的记录,也是查询不出来的

    @Override
    public List<ESXTopicIndex> listByAlgorithmTag(String algorithmTag, int from, int size, int status) {

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
                .must(QueryBuilders.termQuery(Constant.XTopicIndexFields.FIELD_ALGORITHM_TAG, algorithmTag));
        boolQueryBuilder.must(QueryBuilders.termQuery(XTopicConstant.FIELD_STATUS, status));
        searchSourceBuilder.sort(XTopicIndexFields.FIELD_TOPIC_PUBLISH_TIME, SortOrder.DESC);
        searchSourceBuilder.from(from).size(size).postFilter(boolQueryBuilder);
        return query(searchSourceBuilder.toString());
    }

附:依赖的es版本:

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.3.0</version>
        </dependency>

2,解决方法: 在查询条件的关键词后拼接".keyword" 变为如下即可实现精准匹配:

    @Override
    public List<ESXTopicIndex> listByAlgorithmTag(String algorithmTag, int from, int size, int status) {

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
                .must(QueryBuilders.termQuery(XTopicIndexFields.FIELD_ALGORITHM_TAG + ".keyword", algorithmTag));
        boolQueryBuilder.must(QueryBuilders.termQuery(XTopicConstant.FIELD_STATUS, status));
        searchSourceBuilder.sort(XTopicIndexFields.FIELD_TOPIC_PUBLISH_TIME, SortOrder.DESC);
        searchSourceBuilder.from(from).size(size).postFilter(boolQueryBuilder);
        return query(searchSourceBuilder.toString());
    }

3,注意:

网上有说使用matchPhraseQuery代替termQuery使用可以查询出来,问题是:虽然使用matchPhraseQuery可以查询出来,但是查询出来的内容会比精准查询的数据要多,因为它并不是严格的精准查询的,而是将查询条件作为一个整体(不进行分词)然后进行模糊查询的文章来源地址https://www.toymoban.com/news/detail-509082.html

到了这里,关于spring boot es 支持中文精准查询的方法QueryBuilders.termQuery的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • es自定义分词器支持数字字母分词,中文分词器jieba支持添加禁用词和扩展词典

    自定义分析器,分词器 所有字段检索 高亮搜索 分词测试 GET /test_index/_analyze jieba中文分词支持添加禁用词和扩展词库功能 创建索引:PUT http://xxxx:9200/test_index 分词测试: GET http://xxxxxx:9200/test_index/_analyze

    2024年02月11日
    浏览(32)
  • 部署 Spring Boot 应用中文文档

    本文为官方文档直译版本。原文链接 Spring Boot 灵活的打包选项为部署应用程序提供了大量选择。您可以将 Spring Boot 应用程序部署到各种云平台、虚拟机/实机,或使其完全可在 Unix 系统上执行。 本节将介绍一些更常见的部署场景。 Spring Boot 的可执行 jar 是现成的,适用于大多

    2024年01月25日
    浏览(35)
  • Spring Boot Web中文文档

    本文为官方文档直译版本。原文链接 Spring Boot 非常适合网络应用程序开发。您可以使用嵌入式 Tomcat、Jetty、Undertow 或 Netty 创建一个独立的 HTTP 服务器。大多数网络应用程序都使用 spring-boot-starter-web 模块来快速启动和运行。你也可以选择使用 spring-boot-starter-webflux 模块来构建

    2024年01月15日
    浏览(27)
  • 干掉“卧槽”!首个支持中文及跨语言查询的开源在线反向词典!

    大家好,我是 Java陈序员 。 我们在生活中,会遇到一些有趣的人和事,或者是一些令人惊叹的风景。想表达抒发自己心情的时候,到嘴边往往却只能说一句“卧槽”! 别问我为啥知道,因为“俺也一样”! 今天,给大家介绍一个有趣的开源项目,让你干掉“卧槽”! WantW

    2024年02月03日
    浏览(37)
  • Spring Boot 生产就绪中文文档-上

    本文为官方文档直译版本。原文链接 由于篇幅较长,遂分两篇。下半部分中文文档 Spring Boot 包含大量附加功能,可帮助您在将应用程序推向生产时对其进行监控和管理。您可以选择使用 HTTP 端点或 JMX 来管理和监控应用程序。审计、健康状况和指标收集也可自动应用于您的应

    2024年01月23日
    浏览(32)
  • 【官方中文文档】Mybatis-Spring #搭配 Spring Boot

    请查看 MyBatis Spring-boot-starter 子项目获取更多信息。

    2024年02月11日
    浏览(30)
  • Spring Boot集成ES

    POM依赖 配置文件 示例代码

    2024年02月11日
    浏览(29)
  • 解决前端传给Spring Boot的中文数据乱码问题

    解决前端传给Spring Boot的中文数据乱码问题,可以按照以下几个方法进行操作: 在前端的请求头(Request Header)中设置字符集编码为UTF-8: Content-Type: application/x-www-form-urlencoded; charset=UTF-8 1.在Spring Boot的后端接收中文数据的Controller中,添加注解@RequestBody,并设置编码为UTF-8:

    2024年03月25日
    浏览(46)
  • Spring Boot 接口支持高并发

    Spring Boot是一款非常流行的Java开发框架,它提供了很多便利的功能和工具,可以帮助开发人员快速构建高质量的应用程序。在实际开发中,我们经常需要处理大量的请求,这就需要系统能够支持高并发的接口。本文将介绍如何使用Spring Boot来支持高并发的接口,并提供具体的

    2024年02月14日
    浏览(24)
  • es 中文前缀短语匹配(搜索智能补全) prefix查询和completion suggester两种方式

    需求 :es进行前缀匹配,用来进行智能补全 方式一:正常索引库类型,字段类型为text 过程 :es正常的prefix只能进行词语匹配,而中文的分词大部分按字分词,不按语义分词,所以无法搜索出正确的前缀匹配,而能进行短语匹配的match_phrase_prefix匹配,是正常按前几个词进行匹

    2024年01月24日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包