ElasticSearch之suggester API

本文介绍了Elasticsearch中的SuggesterAPI,包括其原理、种类(term和phrase),以及如何通过`term-suggestion`和`phrase`进行查询建议,如`missin`g模式和`popular`模式的应用。
摘要由CSDN通过智能技术生成

写在前面

当我们在使用搜索引擎进行的查询到时候,如果是输入错误的话,搜索引擎会给出一些搜索建议,如下:
在这里插入图片描述
在es中也提供了类似的功能,叫做suggester API。

1:原理和种类

原理是将查询的信息分为很多个词项,然后按某些规则(比如只有一个字母不同这种)找到类似的的词汇,提供了四种API,如下:
在这里插入图片描述

2:各种suggester API

2.1:term

  • 准备测试数据
POST articles/_bulk
{ "index": {} }
{ "body": "lucene is very cool" }
{ "index": {} }
{ "body": "Elasticsearch builds on top of lucene" }
{ "index": {} }
{ "body": "Elasticsearch rocks" }
{ "index": {} }
{ "body": "elastic is the company behind ELK stack" }
{ "index": {} }
{ "body": "Elk stack rocks" }
{ "index": {} }
{ "body": "Elasticsearch is rock solid" }

测试:

POST articles/_search
{
    "suggest": {
        "term-suggestion": {
            "text": "lucen rock",
            "term": {
                "suggest_mode": "missing",
                "field": "body"
            }
        }
    }
}

这里我们设置了"suggest_mode": "missing",该参数的含义是当词项存在时则不返回提示项,所以上面的查询是不会返回rock的提示项的,如下:
在这里插入图片描述
suggest_mode的可配置值如下:

1.missing(默认): 搜索的词如果本身就存在词库中,则不进行推荐搜索 
2.popular:推荐词的词频大于搜索的词的时候才会推荐出来 
3.always:根据建议文本中的术语提出任何匹配的建议。

这里我们将其值修改为popular就可以获取到结果了:
在这里插入图片描述

通过edit distance算法实现,核心思想是修改多少个词可以匹配,其中修改多少个词可以通过max_edits设置,默认为2。

2.2:phrase

phrase是在term的基础上进一步考虑了相隔的单词数等信息,进行推荐,可以认为phrase是对一句话进行推荐。
如下:

POST articles/_search
{
    "suggest": {
        "term-suggestion11": {
            "text": "lucne and elasticsear rock hello world",
            "phrase": {
                "field": "body",
                "max_errors": 2,
                "confidence": 0,
                "direct_generator": [
                    {
                        "field": "body",
                        "suggest_mode": "always"
                    }
                ],
                "highlight": {
                    "pre_tag": "<em>",
                    "post_tag": "</em>"
                }
            }
        }
    }
}

在这里插入图片描述

写在后面

参考文章列表

[ElasticSearch]Suggest查询建议(自动补全&纠错)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值