ElasticSearch之suggester API

写在前面

当我们在使用搜索引擎进行的查询到时候,如果是输入错误的话,搜索引擎会给出一些搜索建议,如下:
在这里插入图片描述
在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查询建议(自动补全&纠错) 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/415277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务Springcloud智慧工地APP源码 AI人工智能识别 支持多工地使用

目录 一、现状描述 二、行业难点 APP端功能 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 AI智能识别 环境监测 实名制管理 智慧监测 智慧工地全套解决方案 一、现状描述 建筑工程建设具有明显的生产规模大宗性与生产场所固定性的特点。建…

Springboot+vue图书管理系统(小白)

图书管理系统 简介&#xff1a;一个最简约的图书管理系统&#xff0c;适用于小白用来练手 前端&#xff1a;VueElementUIechars 后端&#xff1a;SpringbootMybatisMySQL 功能模块&#xff1a; 信息管理&#xff1a;公告信息 操作日志 用户管理&#xff1a;用户信息 图书…

【NTN 卫星通信】基于NTN和TN的Inter-PLMN海事应用场景

1 场景概述 NTN和TN联合组网的场景&#xff0c;可以有多种应用方式&#xff0c;以下用例描述了同时使用多个卫星PLMN和一个地面5G PLMN的海事场景。 MNO-G是一家成熟的卫星PLMN运营商&#xff0c;运营着几颗GEO卫星。MNO-L是一个相对较新的卫星PLMN运营商&#xff0c;操作LEO卫…

Android布局优化之include、merge、ViewStub的使用,零基础入门android

面试了一位工作12年的程序员&#xff0c; 这位老哥有3年java开发经验&#xff0c;2年H5&#xff0c;7年Android开发经验&#xff0c;简历上写着精通Java&#xff0c;Android&#xff0c;熟悉H5开发。没有具体的技术点。 说实话我很期待这位老哥的面试&#xff0c;于是让人事邀…

STM32 Cubemx配置SPI编程(使用Flash模块)

文章目录 前言一、W25Q64模块介绍二、STM32Cubemx配置SPI三、SPI HAL库操作函数分析3.1查询方式3.2中断方式 四、Flash时序分析1.读器件ID指令2.写使能3.擦除扇区4.页编程5.读数据6.读状态寄存器 五、Flash驱动程序编写1.代码编写测试 总结 前言 本篇文章来为大家讲解一下Flas…

华为云项目部署

前端部署 将dist文件夹下的内容拷贝到/usr/local/nginx/html下 #启动脚本是在 # /usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #停止 /usr/local/nginx/sbin/nginx -s stop #重载 /usr/local/nginx/sbin/nginx -s rel…

【基于React实现共享单车管理系统】—项目简介(一)

【基于React实现共享单车管理系统】—项目简介&#xff08;一&#xff09; 一、项目整体架构

springboot227旅游管理系统

springboot旅游管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在…

结合CMD文件,将变量写到ROM和Falsh中

结合CMD文件,将变量写到ROM和Falsh中 RAM是一种易失性存储器,它用于临时存储计算机程序和数据。当计算机关闭或断电时,RAM中的数据将丢失。RAM具有很快的读写速度,但容量有限。 Flash是一种非易失性存储器,它可以长期存储数据而不会丢失。Flash存储器通常用于存储操作系统…

K8S部署postgresql

&#xff08;作者&#xff1a;陈玓玏&#xff09; 一、前置条件 已部署k8s&#xff0c;服务端版本为1.21.14 二、部署postgresql 拉取镜像&#xff0c;docker pull postgres&#xff0c;不指定版本&#xff0c;自动从docker hub拉取最新版本&#xff1b;配置configmap&…

Redis的高性能之道

前言&#xff1a;做码农这么多年&#xff0c;我也读过很多开源软件或者框架的源码&#xff0c;在我看来&#xff0c;Redis是我看过写得最优美、最像一件艺术品的软件&#xff0c;正如Redis之父自己说的那样&#xff0c;他宁愿以一个糟糕的艺术家身份而不是一名好程序员被别人记…

每日OJ题_牛客DD1 连续最大和(IO型OJ)

目录 牛客DD1 连续最大和 解析代码 牛客DD1 连续最大和 连续最大和_牛客题霸_牛客网 解析代码 #include <climits> #include <iostream> #include <vector> using namespace std; int main() {int n 0;cin >> n;vector<int> arr(n);for (in…

TypeScript学习

TypeScript 是一种基于 JavaScript 构建的强类型编程语言。 ts不是js的替代只是为了大型项目更好的扩展&#xff0c;微软编写的一个强类型的脚本。 ts中对参数&#xff0c;变量&#xff0c;返回值 都有限制&#xff0c;不像js那么随意&#xff0c;类的定义也更严格&#xff0…

vscode右键菜单栏功能说明

本文主要介绍在vscode中的python代码文件中&#xff0c;单击鼠标右键出现的菜单栏功能。部分功能可能与安装插件相关&#xff0c;主要用于个人查阅。 单击右键菜单栏如下&#xff1a; GO to xx类型命令 “Go to Definition”、“Go to Declaration”、"Go to Type Defin…

数据结构(C语言)代码实现(十)——链队列循环队列

目录 参考资料 链队列的实现 LinkQueue.h LinkQueue.cpp 测试函数test.cpp 测试结果 循环队列的实现&#xff08;最小操作子集&#xff09; 完整代码 测试结果 参考资料 数据结构严蔚敏版 链队列的实现 LinkQueue.h #pragma once #include <cstdio> #incl…

springboot之jdbc、druid、mybatis

springboot整合jdbc spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.52.3:3306/mybatis?useUnicodetrue&characterEncodingutf-8&serverTimezoneUTCusername: rootpassword: root<?xml version"1.0" encodi…

SpringBoot+Vue全栈开发-刘老师教编程(b站)(三)

vue框架快速上手 1.导入vue的脚本文件 2.声明要被vue所控制的DOM区域 3.创建vue的实例对象 1.基本用法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&…

2024.2.28

什么是回调函数&#xff1a;回调函数就是一个参数&#xff0c;将这个函数作为参数传到另一个函数里面&#xff0c;当那个函数执行完之后&#xff0c; 再执行传进去的这个函数。这个过程就叫做回调 结构体和共用体的区别&#xff1a;结构体的各个成员会占用不同的内存&#xff…

【ArcGIS】基本概念-空间参考与变换

ArcGIS基本概念-空间参考与变换 1 空间参考与地图投影1.1 空间参考1.2 大地坐标系&#xff08;地理坐标系&#xff09;1.3 投影坐标系总结 2 投影变换预处理2.1 定义投影2.2 转换自定义地理&#xff08;坐标&#xff09;变换2.3 转换坐标记法 3 投影变换3.1 矢量数据的投影变换…

Django模型进阶(Mysql配置、模型管理,表关联、一对一、一对多,多对多)

模型进阶&#xff1a; Mysql配置&#xff1a; 1.安装mysql 2安装MySQL驱动&#xff0c;使⽤mysqlclient pip install mysqlclient pip install -i https://pypi.douban.com/simple mysqlclientLinux Ubuntu下需要先安装&#xff1a;apt install libmysqld-dev 再安装: apt…