重生之我们在ES顶端相遇第9 章- 搜索框最常用的功能 - 搜索建议

1 前言

在上章介绍完 bool 查询后。我们接下来介绍搜索最常被使用的功能:搜索建议、搜索纠错。
在 ES 中的 Suggesters API 中有以下 4 个 API

  • Term suggester
  • Phrase Suggester
  • Completion Suggester
  • Context Suggester
    本文,因章幅原因,以及开发中使用频率,只选择讲解 Term suggester, Context Suggester。更多内容请阅读 Suggesters API

2 Term Suggester

2.1 基本介绍

返回与输入的文本相似的 terms。在日常开发中,我们可以使用 term suggest 作为拼写纠错来使用。例如以下应用场景:
在这里插入图片描述

2.2 使用 demo

写入数据

POST test6/_doc
{
  "intro": "apple fruits applz"
}
POST test6/_doc
{
  "intro": "grapes fruit grapz"
}
POST test6/_doc
{
  "intro": "banana fruit bannnn"
}

查询语法

GET test6/_search
{
  "suggest": {         
    "my_suggest": {   ①
      "text": "banane",   ②
      "term": {
        "field": "intro"  ③
      }
    }
  }
}
  • ①:自定义的名词
  • ②:用户输入的文本
  • ③:被检索的字段
2.3 常用参数
2.3.1 suggest_mode

该参数有 3 个枚举值

  • missing:如果用户输入的文本存在于文档中,则不推荐。适用于拼写检查
  • popular:只推荐比用户输入的文本出现频率更高的 term。适用于推荐更流行的词
  • always:无论用户输入的文本是否存在于文档中,都推荐。

love apples 会被分词为 love, apples,这 2 个词都不存在于文档中。ES 文档中有 apple 这个词,就推荐了。

GET test6/_search
{
  "suggest": {         
    "my_suggest": { 
      "text": "love apples",   
      "term": {
        "field": "intro",
        "suggest_mode": "missing"
      }
    }
  }
}

文档中存在 fruit, fruits。但是 fruit 出现的频率大于 fruits 因此 fruit 被推荐。

GET test6/_search
{
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值