Elasticsearch suggester搜索建议初步
环境
- Elasticsearch 2.3.5
- Elasticsearch-ik-plugin
实现
- 搜索建议的对象
假设有以下两个json对象,需要对其中tags字段进行搜索建议:
//对象Product1
{
"title": "Product1",
"description": "Product1 Description",
"tags": [
"山东",
"山东高新开发区",
"山东大学",
"two columns",
"wordpress"
]
}
//对象Product2
{
"title": "Product2",
"description": "Product2 Description",
"tags": [
"山东省",
"山东公安局",
"山东检察院",
"skrill",
"wordland"
]
}
- 设置索引mapping
建立索引suggester_ik_test和mapping,如下:
注意使用的suggester类型为completion
curl -XPUT "http://10.110.13.57:9200/suggester_ik_test?pretty" -d'
{
"mappings": {
"product": {
"properties": {
"description": {
"type": "string"
},
"tags": {
"type": "string"
},
"title": {
"type": "string"
},
"tag_suggest": {
"type": "completion",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"payloads": false
}
}
}
}
}'
- 索引数据
根据上述索引和mapping对json数据建立索引:
//Product1
curl -XPUT "http://10.110.13.57:9200/suggester_ik_test/product/1?pretty" -d'
{
"title": "Product1",
"description": "Product1 Description",
"tags": [
"山东",
"山东高新开发区",
"山东大学",
"two columns",
"wordpress"
],
"tag_suggest": {
"input": [
"山东",
"山东高新开发区",
"山东大学",
"two columns",
"wordpress"
]
}
}'
//Product2
curl -XPUT "http://10.110.13.57:9200/suggester_ik_test/product/2?pretty" -d'
{
"title": "Product2",
"description": "Product2 Description",
"tags": [
"山东省",
"山东公安局",
"山东检察院",
"skrill",
"wordland"
],
"tag_suggest": {
"input": [
"山东省",
"山东公安局",
"山东检察院",
"skrill",
"wordland"
]
}
}'
- 测试
搜索“山东”,查看是否有搜索建议提示生效:
curl -XPOST "http://10.110.13.57:9200/suggester_ik_test/_suggest?pretty" -d'
{
"product_suggest":{
"text":"山东",
"completion": {
"field" : "tag_suggest"
}
}
}'
//应该得到以下数据
{
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"product_suggest" : [ {
"text" : "山东",
"offset" : 0,
"length" : 2,
"options" : [ {
"text" : "山东",
"score" : 1.0
}, {
"text" : "山东公安局",
"score" : 1.0
}, {
"text" : "山东大学",
"score" : 1.0
}, {
"text" : "山东检察院",
"score" : 1.0
}, {
"text" : "山东省",
"score" : 1.0
} ]
} ]
}
参考资料
Quick and Dirty Autocomplete with Elasticsearch Completion Suggest
Elasticsearch suggester搜索建议初步的更多相关文章
- Elasticsearch Suggester 学习
suggester搜索就像百度搜索框中的提示类似. Elasticsearch 中提供类似的搜索功能. 答案就在Suggesters API. Suggesters基本的运作原理是将输入的文本分解为t ...
- solr入门之搜索建议的几种实现方式和最终选取实现思路
上篇博客中我简单的讲了下solr自身的suggest模块来实现搜索建议.但是今天研究了下在solr自身的suggest中添加进去拼音来智能推荐时不时很方便.在次从网上搜集和整理思考了下该问题的解决. ...
- 十九种Elasticsearch字符串搜索方式终极介绍
前言 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出来的结果经常不是自己想要的,然而又不知道问题出在了哪 ...
- Elasticsearch实现搜索推荐词
本篇介绍的是基于Elasticsearch实现搜索推荐词,其中需要用到Elasticsearch的pinyin插件以及ik分词插件,代码的实现这里提供了java跟C#的版本方便大家参考. 1.实现的结 ...
- Elasticsearch分布式搜索和数据分析引擎-ElasticStack(上)v7.14.0
Elasticsearch概述 **本人博客网站 **IT小神 www.itxiaoshen.com Elasticsearch官网地址 https://www.elastic.co/cn/elast ...
- 各大搜索引擎智能提示API(JSONP跨域实现自动补全搜索建议)
---------------------------------------搜索引擎JSONP接口--------------------------------------------- 提示:U ...
- AJAX实现google搜索建议实战
搜索建议实战的目标是为了输入搜索内容,动态的进行匹配,效果图如下: 整体思路: 在客户端搜索框中触发onkeyup事件, 随时向PHP服务器请求当前输入框中的内容, PHP服务器获取到keywords ...
- 【百度地图API】如何使用suggestion--下拉列表方式的搜索建议
原文:[百度地图API]如何使用suggestion--下拉列表方式的搜索建议 摘要: 百度地图上有一个很强大的搜索建议功能,以下拉列表的方式展示出来.比如,输入“百度”,下拉列表中就会出现“北京市海 ...
- 嵌入AppBar并且带搜索建议的搜索框(Android)
先看结果: 相关的官方文档在这里:Creating a Search Interface Android官方提供了两种方式: 弹出一个Dialog,覆盖当前的Activity界面 在AppBar中扩展 ...
随机推荐
- poj1321
这个题要是乍一看很难会想深搜,确实如此,可如果知道了深搜的方法,这个题就简 了不少,至于用深搜的时候要考虑当k==n和k<n时这咱种情况,当K==n时,当然很好想 到深搜搜下很容易找到所有方法, ...
- MA82G5D16AS16 主频调试记录
MA82G5D16AS16 主频调试记录 当 SCKS 设置 为 MCKDO / 128 时 MCU 的电流为 0.58mA,100UF 电容可以维持 0.5S,大概可以满足. 但是需要注意外围的线路 ...
- BZOJ4066:简单题
浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...
- Installing Redis more properly
Installing Redis more properly Running Redis from the command line is fine just to hack a bit with i ...
- scala 定时器
假如我们要开发一个定时器,该定时器每秒钟执行一定的动作,我们如何把要执行的动作传给定时器?最直观的回答是:传一个实现动作的函数(function) object Helloworld { def on ...
- Disconf web管理端安装
1.环境配置配置java.maven环境,并安装mysql,reids,zookeeeper,Nginx2.下载disconf下载https://codeload.github.com/knightl ...
- HTTP-Runoob:教程
ylbtech-HTTP-Runoob:教程 1.返回顶部 1. HTTP 教程 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络 ...
- Mongodb 副本集的节点详细操作
副本集操作 官方文档:https://docs.mongodb.com/v3.2/reference/method/js-replication/ 1 rs.add(){ _id: <int&g ...
- iOS消息转发机制
iOS消息转发机制 “消息派发系统”(message-dispatch system) 若想令类能够理解某条消息,我们必须实现出对应的方法才行.但是,在编译器向类发送其无法解读的消息时并不会报错,因为 ...
- java.lang.Runtime.exec() Payload Workarounds
由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我们需要用进行一次编码 编码工具: 地址: http://jackson.thuraisamy.me/r ...