ES系列、Elasticsearch Suggester API(自动补全)
1.概念
1.1 补全api主要分为四类
- Term Suggester(纠错补全,输入错误的情况下补全正确的单词)
- Phrase Suggester(自动补全短语,输入一个单词补全整个短语)
- Completion Suggester(完成补全单词,输出如前半部分,补全整个单词)
- Context Suggester(上下文补全)
整体效果类似百度搜索,如图:
2. Completion suggester 自动补全
针对自动补全场景而设计的建议器。此场景下用户每输入一个字符的时候,就需要即时发送一次查询请求到后端查找匹配项,在用户输入速度较高的情况下对后端响应速度要求比较苛刻。因此实现上它和前面两个Suggester采用了不同的数据结构,索引并非通过倒排来完成,而是将analyze过的数据编码成FST和索引一起存放。对于一个open状态的索引,FST会被ES整个装载到内存里的,进行前缀查找速度极快。但是FST只能用于前缀查找,这也是Completion Suggester的局限所在。
2.1建立索引
put /book{"mappings": {"music" : {"properties" : {"suggest" : {"type" : "completion"},"title" : {"type": "keyword"}}}}
}注意,最终写入数据需要 /book/music
2.2插入数据
put /book/music/_doc/1
{"suggest":"爱一个人好难"
}put /book/music/_doc/2
{"suggest":"爱一个人好难"
}put /book/music/_doc/3
{"suggest":"爱真的需要勇气"
}
2.3自动补全查询
示例1:查询建议根据前缀查询
POST book/music/_search
{"suggest": {"song-suggest" : {"prefix" : "爱","completion" : {"field" : "suggest"}}}
}
示例1:查询建议根据前缀查询结果
{"took": ,"timed_out": false,"_shards": {"total": ,"successful": ,"skipped": ,"failed":},"hits": {"total": ,"max_score": ,"hits": []},"suggest": {"song-suggest": [{"text": "te","offset": ,"length": ,"options": [{"text": "爱一个人好难","_index": "book","_type": "music","_id": "6Xu6mmUBYLvVFwGWpXeL","_score": ,"_source": {"suggest": "爱一个人好难"}},{"text": "爱一个人好难","_index": "book","_type": "music","_id": "6nu8mmUBYLvVFwGWSndC","_score": ,"_source": {"suggest": "爱一个人好难"}},{"text": "爱真的需要勇气","_index": "book","_type": "music","_id": "63u8mmUBYLvVFwGWZHdC","_score": ,"_source": {"suggest": "爱真的需要勇气"}}]}]}
}
示例2:对建议查询结果去重
{"suggest": {"song-suggest" : {"prefix" : "爱","completion" : {"field" : "suggest" ,"skip_duplicates": true}}}
}
本文部分参考:《ES系列十三、Elasticsearch Suggester API(自动补全)》 里面有整个四种补全的方式。
ES系列、Elasticsearch Suggester API(自动补全)相关推荐
- SpringCloud(9)— Elasticsearch聚合和自动补全
SpringCloud(9)- Elasticsearch聚合和自动补全 一 数据聚合 1.聚合的分类 聚合(aggregations)可以实现对文档数据的统计,分析,运算.常见的聚合有三种: 1.桶 ...
- Elasticsearch高级使用-自动补全
一.概念 注意事项 为了避免搜索同音字,搜索时不要使用拼音分词器 二.拼音分词器 官网https://github.com/medcl/elasticsearch-analysis-pinyin 安装 ...
- Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)
文章目录 1. 自动补全 1.1 拼音分词器 1.2.1 自定义分词器 1.2.2 小结 1.2 自动补全 1.3 实现酒店搜索框自动补全 1.3.1 修改酒店映射结构 1.3.2 修改HotelDo ...
- Elasticsearch实战-实现Hotel索引库的自动补全、拼音搜索功能
一.实现思路 1.修改hotel索引库结构,设置自定义拼音分词器 2.修改索引库的name.all字段,使用自定义分词器 3.索引库添加一个新字段suggestion,类型为completion类型, ...
- Elasticsearch生产实战(ik分词器、拼音分词、自动补全、自动纠错)
目录 一.IK分词器 1.IK分词器介绍 2.安装 3.使用 4.自定义词库 二.拼音分词器 1.拼音分词器介绍 2.安装 三.自动补全 1.效果演示 2.实战 四.自动纠错 1.场景描述 2.DSL ...
- ElasticSearch从入门到精通--第七话(自动补全、拼音分词器、自定义分词、数据同步方案)
ElasticSearch从入门到精通–第七话(自动补全.拼音分词器.自定义分词.数据同步方案) 使用拼音分词 可以引入elasticsearch的拼音分词插件,地址:https://github.c ...
- 使用 Elasticsearch 做一个好用的日语搜索引擎及自动补全
最近基于 Elastic Stack 搭建了一个日语搜索服务,发现日文的搜索相比英语和中文,有不少特殊之处,因此记录下用 Elasticsearch 搭建日语搜索引擎的一些要点.本文所有的示例,适用于 ...
- java中使用kuromoji_使用Elasticsearch做一个好用的日语搜索引擎及自动补全
最近基于 Elastic Stack 搭建了一个日语搜索服务,发现日文的搜索相比英语和中文,有不少特殊之处,因此记录下用 Elasticsearch 搭建日语搜索引擎的一些要点.本文所有的示例,适用于 ...
- ElasticSearch高级篇(数据聚和、自动补全、数据同步、分片集群)
文章目录 1.数据聚合 1.1.聚合的种类 1.2.DSL实现聚合 1.2.1.Bucket聚合语法 1.2.2.聚合结果排序 1.2.3.限定聚合范围 1.2.4.Metric聚合语法 1.2.5. ...
最新文章
- matlab fir工具箱,用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法
- python横向柱状图-python绘制横向水平柱状条形图Bar
- SSE命令示例代码(转换、加载、置位、存储)
- 2020年12月大学英语四六级英语作文预测(XDF王江涛)
- 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建
- 你必须知道的28个HTML5特征、窍门和技术
- MySQL模糊查询—is null关键字
- mysql索引的种类
- 不同.net版本实现单点登录
- OpenShift 4 之获取OpenShif的最新开发进度
- mysql中递增列_如何使用JDBC在MySQL中创建带有自动递增列的表?
- 使用java实现面向对象 第七章
- 目标检测回归损失函数——L1、L2、smooth L1
- 数据分析人员需要掌握SQL到什么程度?3个常考题目刷一刷
- ardupilot 关于设备车Rover的学习《1》------如何编译下载
- 走进tensorflow第六步——拟合一元二次函数
- 从端到云:飞腾平台全栈解决方案白皮书
- 计算机的基本配件图片,计算机硬件的重要部件
- 听音室-HIFI入门之400多张发烧碟中选出的精品
- 解决ImageIo图像类型不支持的异常:Unsupported Image Type
热门文章
- 计算机视觉实验:边缘提取与特征检测
- Power BI —— 微软的数据分析和可视化工具工业数据分析(一)
- 厉害了!万能的支付宝,融入生活的刷脸支付
- c语言实现将字符串首尾*删除,java 编写函数将字符串的首尾空格删除。
- 【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模
- 电压跟随器的概念及使用总结
- 工作是基础,身体是本钱
- 长安链cmc工具check user cert on chain failed解决
- tinyxml2创建、读取、修改文件通用操作
- CVPR2022论文速览--Vehicle trajectory prediction works, but not everywhere