ElasticSearch模糊查询(中文检索)

# "*" 表示匹配任意字符
GET /lib4/user/_search
{
  "query": {
    "wildcard": {"name": "赵*"}
  }
}

# "?" 表示匹配任意一个字符
GET /lib4/user/_search
{
  "query": {
    "wildcard": {"name": "li?i"}
  }
}

 fuzzy实现模糊查询

uzzy 查询是 term 查询的模糊等价。

a、是 包含(contains) 操作,而非 等值(equals) (判断)。

b、不知道分词器的存在,所以不会去分词,

c、所谓的包含是文档分词结果某个分词是否包含,不是整个文档是否包含

d、因为是在分词结果中匹配,所以大写要转换为小写,大写字母是匹配不到

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

GET /lib4/user/_search
{
  "query": {
    "fuzzy": {
      "interests": {"value": "喝酒"}
    }
  }
}
发布了298 篇原创文章 · 获赞 107 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/ywl470812087/article/details/105010942