ElasticSearch fuzzy模糊查询(英文检索)

本文介绍了ElasticSearch中fuzzy查询的用法,包括设置查询关键字、权值、最小相似度、共同前缀长度和最大扩展数目。通过示例展示了如何进行模糊查询,即使输入有误也能获取相关结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 fuzzy实现模糊查询

value:查询的关键字
boost:查询的权值,默认值是1.0
min_similarity:设置匹配的最小相似度,默认值为0.5, 对于字符串,取值为0-1(包括0和1);对于数值,取值可能大于1;对于日期型取值为1d,1m等,1d就代表1天
prefix_length:指明区分词项的共同前缀长度,默认是0
max_expansions:查询中的词项可以扩展的数目,默认可以无限大
GET /ib3/user/ search { "queny":{ "fuzy*:{ *interests": "chagge* }}}
GET /ib3/user/_ search { "query":{ "fuzzy*: { "interests":{ "value*: "chagge" }}}

 

#下面可以明显查询条件写错了,但是我们使用模糊查询就可以查询出来,模糊查询很简单 

#fuzzy模糊查询
GET /lib3/user/_search
{
  "query": {
    "fuzzy": {"name": "zholiu"}
  }
}
{
  "took" : 587,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 
### 实现ElasticSearch中的模糊检索Elasticsearch中实现模糊检索可以通过多种方式完成,其中一种常见的方式是利用`fuzzy`查询来处理。此类型的查询允许一定量的编辑距离(Levenshtein Distance),从而能够找到拼写错误但仍接近输入词条的结果[^4]。 对于简单的场景,可以直接通过如下JSON结构发送请求到Elasticsearch服务器: ```json GET /index_name/type_name/_search { "query": { "fuzzy": { "field_name": { "value": "input_value", "fuzziness": "AUTO", "prefix_length": 0, "max_expansions": 50, "transpositions": true } } } } ``` 这里`fuzziness`参数控制着允许的最大编辑距离;`prefix_length`定义了不被修改的公共前缀长度;而`max_expansions`则限定了最多尝试多少次变体形式。 当涉及到更复杂的业务逻辑时,比如结合其他字段进行过滤或是多条件组合查询,则可以考虑使用布尔查询(`bool`)配合`should`和`must`子句以及`fuzzy`查询一起工作。例如,在一个图书管理系统里查找既含有特定兴趣又满足某些额外条件的用户记录: ```json GET /library/users/_search { "query": { "bool": { "must": [ { "fuzzy": { "interests": { "value": "音乐" } } }, { "term": { "age_range": "adult" } } ] } } } ``` 这段代码展示了如何在一个复合查询内嵌入`fuzzy`查询以达到更加精准的数据筛选效果[^2]。 为了简化开发流程并提高可维护性,还可以创建自定义注解以便更容易地构建这些复杂查询表达式。这通常涉及Java应用程序层面的工作,特别是Spring Data Elasticsearch这样的框架下更为适用[^3]。 ```java @Target({FIELD}) @Retention(RUNTIME) public @interface QueryField { String name() default ""; String type() default ""; } ``` 以上介绍了几种不同层次上实施Elasticsearch模糊搜索的方法,从基本配置直到高级应用模式都进行了覆盖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值