iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >ElasticSearch实现忽略大小写模糊查询
  • 372
分享到

ElasticSearch实现忽略大小写模糊查询

2024-04-02 19:04:59 372人浏览 安东尼
摘要

1.引入依赖 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-

1.引入依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>3.2.0.RELEASE</version>
</dependency>

2.定义

import io.swagger.annotations.apiModel;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.data.elasticsearch.annotations.Setting;


@Document(indexName = "GoodsIdx", type = "goodsType")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Setting(settingPath = "elastic-setting.JSON")
public class GoodsIndex implements Serializable {

    @Id
    private Long id;

    @Field(type = FieldType.KeyWord, analyzer = "caseSensitive")
    private String name;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String brief;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String introduction;
}

3.定义配置文件

{
  "analysis": {
    "analyzer": {
      "caseSensitive": {
        "filter": "lowercase",
        "type": "custom",
        "tokenizer": "keyword"
      }
    }
  }
}

4.实现忽略大小写的模糊查询

    @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;

    @Test
    public void testSearch() {
        String content = "abc";

        Map<Long, List<Goods>> rst = new HashMap<>();
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        BoolQueryBuilder contentQueryBuilder = QueryBuilders.boolQuery();
        WildcardQueryBuilder groupNameQueryBuilder = QueryBuilders.wildcardQuery("name", "*" + content + "*");
        MatchQueryBuilder briefMatchQueryBuilder = new MatchQueryBuilder("brief", content);
        briefMatchQueryBuilder.operator(Operator.AND);
        MatchQueryBuilder detailMatchQueryBuilder = new MatchQueryBuilder("introduction", content);
        detailMatchQueryBuilder.operator(Operator.AND);
        contentQueryBuilder
                .should(groupNameQueryBuilder)
                .should(briefMatchQueryBuilder)
                .should(detailMatchQueryBuilder)
        ;
        boolQueryBuilder.must(contentQueryBuilder);

        queryBuilder.withQuery(boolQueryBuilder);
        queryBuilder.withPageable(PageRequest.of(0, 10000));

        List<Goods> serviceGroupInfos = elasticsearchRestTemplate
                .queryForList(queryBuilder.build(), Goods.class);
    }

5.搜索语句

{
  "bool": {
    "must": [
      {
        "bool": {
          "should": [
            {
              "wildcard": {
                "groupName": {
                  "wildcard": "*银行*",
                  "boost": 1
                }
              }
            },
            {
              "match": {
                "groupBrief": {
                  "query": "银行",
                  "operator": "AND",
                  "prefix_length": 0,
                  "max_expansions": 50,
                  "fuzzy_transpositions": true,
                  "lenient": false,
                  "zero_terms_query": "NONE",
                  "auto_generate_synonyms_phrase_query": true,
                  "boost": 1
                }
              }
            },
            {
              "match": {
                "groupIntroduction": {
                  "query": "银行",
                  "operator": "AND",
                  "prefix_length": 0,
                  "max_expansions": 50,
                  "fuzzy_transpositions": true,
                  "lenient": false,
                  "zero_terms_query": "NONE",
                  "auto_generate_synonyms_phrase_query": true,
                  "boost": 1
                }
              }
            }
          ],
          "adjust_pure_negative": true,
          "boost": 1
        }
      }
    ],
    "adjust_pure_negative": true,
    "boost": 1
  }
}

--结束END--

本文标题: ElasticSearch实现忽略大小写模糊查询

本文链接: https://www.lsjlt.com/news/99257.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ElasticSearch实现忽略大小写模糊查询
    1.引入依赖 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-...
    99+
    2024-04-02
  • mongodb怎么查询忽略大小写
    在MongoDB中,可以使用正则表达式来实现忽略大小写的查询。具体方法如下: 使用正则表达式查询:可以使用$regex操作符来指定...
    99+
    2024-04-03
    mongodb
  • Mysql模糊查询中是否区分大小写
    这篇文章将为大家详细讲解有关Mysql模糊查询中是否区分大小写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。COLLATE通常是和数据编码(CHARSET)相关的,一般来说每种CHARSET...
    99+
    2023-06-15
  • MyBatis实现模糊查询
    1.第一种方式 第一种方式:在java程序中,把like的内容组装好,把这个内容传入到sql语句 我们先在dao接口中定义一个方法 /ke的第一种方式List selectLikeOne(@Param("name") S...
    99+
    2023-10-20
    mybatis java mysql Powered by 金山文档
  • 深入探究Mysql模糊查询是否区分大小写
    前言 近期,一直在忙着写一个小小的个人博客项目,在实现 “全局搜索” 功能时,发现mysql模糊查询语句有点儿神奇(本小白刚刚步入编程阶段,所以可能让大家见笑了,哈哈哈),有时候 m...
    99+
    2024-04-02
  • SpringBoot整合ElasticSearch实现模糊查询,排序,分页,高亮
    目录 前言 1.框架集成-SpringData-整体介绍 1.1Spring Data Elasticsearch 介绍 2.框架集成Spring Data Elasticsearch 2.1版本说明 2.2.idea创建一个spring...
    99+
    2023-09-02
    elasticsearch spring boot java
  • Vue如何实现模糊查询
    这篇文章主要介绍Vue如何实现模糊查询,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue实现模糊查询通过watch和computed实现Vue实现模糊查询计算方法能实现的侦听方法也能够实现,但推荐使用计算方法,应为...
    99+
    2023-06-20
  • mybatis模糊查询怎么实现
    MyBatis模糊查询可以通过使用 `%` 或 `_` 来实现。`%` 表示任意多个字符(包括0个字符),`_` 表示任意一个字符。...
    99+
    2023-09-05
    mybatis
  • Python 代码实现模糊查询
    最近在做一个django项目,里面有一个字典数据非常大,虽然已经做了分页处理。但是用户想要找到指定的数据,还得一页页翻,非常繁琐。字典的结构如下:file_list = [     ...
    99+
    2023-01-31
    模糊 代码 Python
  • mongodb模糊查询怎么实现
    在MongoDB中,可以使用正则表达式来实现模糊查询。以下是一个示例: 假设有一个名为“users”的集合,其中包含了一个名为“us...
    99+
    2024-04-03
    mongodb
  • SQL的模糊查询怎么实现
    本篇内容介绍了“SQL的模糊查询怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言说到SQL的模糊...
    99+
    2024-04-02
  • mybatis实现多条件模糊查询
    EmployeeMapper.xml SELECT id,NAME,gender,idcard,nationid FROM employee WHERE 1=1 ...
    99+
    2023-09-01
    sql 数据库 mysql
  • MySQL不用like+%实现模糊查询
    目录一、前言二、倒排索引三、全文检索3.1、创建全文索引3.2、使用全文索引3.3、Natural Language3.4、Boolean3.5、Query Expansion四、删除全文索引4.1、直接删除全文索引语法...
    99+
    2023-01-05
    MySQL模糊查询 MySQLlike+%模糊查询
  • MyBatis实现万能Map和模糊查询
    目录万能Map模糊查询万能Map   我们在上一节博文里面将到利用Mybatis实现CRUD操作的时候,我们在数据库表中新增一条数据是这样操作的: 实体类对象...
    99+
    2024-04-02
  • mysql中的模糊查询怎么实现
    在MySQL中,可以使用LIKE操作符来实现模糊查询。LIKE操作符用于在WHERE子句中搜索列中的指定模式。模式可以包含通...
    99+
    2024-04-09
    mysql
  • php中mongodb模糊查询如何实现
    在PHP中使用MongoDB进行模糊查询可以通过MongoDB的正则表达式来实现。可以使用MongoDB的“$regex”操作符来进...
    99+
    2024-04-12
    php mongodb
  • JDBC连接MySQL并实现模糊查询
    场景: 在学习JDBC的语言中,每次都执行通用的几步:即注册驱动,获取连接,创建操作,处理结果,释放资源 过于复杂,因此不妨将上述步骤封装成工具类,只对外提供方法! 描述: 这是不使...
    99+
    2024-04-02
  • mysql中怎么实现查询区分大小写
    这期内容当中小编将会给大家带来有关mysql中怎么实现查询区分大小写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。查询区分大小写的问题 mysql查询默认是不区...
    99+
    2024-04-02
  • Node实现搜索框进行模糊查询
    本文实例为大家分享了Node实现搜索框进行模糊查询的具体代码,供大家参考,具体内容如下 一、需求 点击导航栏中的搜索图,出现搜索框,从而进行文章的模糊查询 二、建表 1.blog表 ...
    99+
    2024-04-02
  • MyBatis模糊查询的几种实现方式
    大家好呀,我是柚子,今天这篇文章总结MyBatis模糊查询的几种实现方式~ 文章目录 前言一、模糊查询的几种实现方式1.concat函数和#{}拼接的方式2.%和${}拼接的方式3.concat函数和${}拼接的方式4.||和...
    99+
    2023-08-18
    mybatis java spring boot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作