Elasticsearch Suggester智能搜索建议

2024-03-06 06:20

本文主要是介绍Elasticsearch Suggester智能搜索建议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 Term Suggester
PUT /blogs/
{
“mappings”: {
“properties”: {
“body”:{
“type”: “text”
}
}
}
}

POST _bulk/?refresh=true
{ “index” : { “_index” : “blogs” } }
{ “body”: “Lucene is cool”}
{ “index” : { “_index” : “blogs” } }
{ “body”: “Elasticsearch builds on top of lucene”}
{ “index” : { “_index” : “blogs” } }
{ “body”: “Elasticsearch rocks”}
{ “index” : { “_index” : “blogs” } }
{ “body”: “Elastic is the company behind ELK stack”}
{ “index” : { “_index” : “blogs” } }
{ “body”: “elk rocks”}
{ “index” : { “_index” : “blogs”} }
{ “body”: “elasticsearch is rock solid”}

missing:考虑文本中出现的出现的相似词
POST /blogs/_search
{
“suggest”: {
“my-suggestion”: {
“text”: “lucne rock”,
“term”: {
“suggest_mode”: “missing”,
“field”: “body”
}
}
}
}
在这里插入图片描述

其中"rock"的options是空的,表示没有可以建议
的选项,为什么? 上面提到了,我们为查询提供的suggest mode是"missing",由于"rock"在索引的词典
里已经存在了,够精准,就不建议啦。 只有词典里找不到词,才会为其提供相似的选项
2 Phrase suggester
其在Term suggester的基础上,会考量多个term之间的关系,比如是否同时出现在索
引的原文里,相邻程度,以及词频等等
POST /blogs/_search
{
“suggest”: {
“my-suggestion”: {
“text”: “lucne and elasticsear rock”,
“phrase”: {
“field”: “body”,
“highlight”: {
“pre_tag”: “”,
“post_tag”: “

}
}
}
}
}
在这里插入图片描述
options直接返回一个phrase列表,由于加了highlight选项,被替换的term会被高亮。因为lucene和
elasticsearch曾经在同一条原文里出现过,同时替换2个term的可信度更高,所以打分较高,排在第一
位返回。Phrase suggester有相当多的参数用于控制匹配的模糊程度,需要根据实际应用情况去挑选和
调试

3 Completion Suggester
它主要针对的应用场景就是"Auto Completion"。 此场景下用户
每输入一个字符的时候,就需要即时发送一次查询请求到后端查找匹配项,在用户输入速度较高的情况
下对后端响应速度要求比较苛刻
PUT /blogs_completion/
{
“mappings”: {
“properties”: {
“body”: {
“type”: “completion”
}
}
}
}

POST _bulk/?refresh=true
{ “index” : { “_index” : “blogs_completion” } }
{ “body”: “Lucene is cool”}
{ “index” : { “_index” : “blogs_completion” } }
{ “body”: “Elasticsearch builds on top of lucene”}
{ “index” : { “_index” : “blogs_completion”} }
{ “body”: “Elasticsearch rocks”}
{ “index” : { “_index” : “blogs_completion” } }
{ “body”: “Elastic is the company behind ELK stack”}
{ “index” : { “_index” : “blogs_completion” } }
{ “body”: “the elk stack rocks”}
{ “index” : { “_index” : “blogs_completion”} }
{ “body”: “elasticsearch is rock solid”}

POST /blogs_completion/_search?pretty
{
“size”: 0,
“suggest”: {
“blog-suggest”: {
“prefix”: “elastic i”,
“completion”: {
“field”: “body”
}
}
}
}

在这里插入图片描述
总结:精准程度上(Precision)看: Completion > Phrase > term, 而召回率上(Recall)则反之。从性能上看,Completion Suggester是最快的,如果能满足业务需求,只用Completion Suggester做前缀匹配是最理想的

这篇关于Elasticsearch Suggester智能搜索建议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779083

相关文章

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这