博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch学习笔记5: suggest实现搜索补全
阅读量:6916 次
发布时间:2019-06-27

本文共 2868 字,大约阅读时间需要 9 分钟。

hot3.png

搜索补全功能使用的是es的completion suggester实现 官方文档地址:

先设置mapping:

POST  /index/completion/_mapping{  "properties":{    "title": {      "type": "text",      "analyzer": "ik_sync_smart"    },    "title_suggest": {      "type": "completion",      "analyzer": "ik_sync_smart",      "search_analyzer": "ik_sync_smart"    }  }}

重点是title_suggest,这个字段就是之后我们搜索补全的字段,需要设置type为completion,analyzer按情况设置分析器

索引数据:

POST /index/completion/_bulk{ "index" : { } }{ "title": "背景天安门广场大学", "title_suggest": "背景天安门广场大学"}{ "index" : { } }{ "title": "北京天安门","title_suggest": "北京天安门"}{ "index" : { } }{ "title": "北京鸟巢","title_suggest": "北京鸟巢"}{ "index" : { } }{ "title": "奥林匹克公园","title_suggest": "奥林匹克公园"}{ "index" : { } }{ "title": "奥林匹克森林公园","title_suggest": "奥林匹克森林公园"}{ "index" : { } }{ "title": "北京奥林匹克公园","title_suggest": "北京奥林匹克公园"}{ "index" : { } }{ "title": "北京奥林匹克公园","title_suggest": {"input": "我爱中国","weight": 100}}

索引的时候可以对suggest字段,增加weight增加排序权重

搜索补全:

POST /index/completion/_search{ "size": 0,  "suggest": {    "blog-suggest": {      "prefix": "北京",      "completion": {        "field": "title_suggest"      }    }  }}返回:{    "took": 27,    "timed_out": false,    "_shards": {        "total": 3,        "successful": 3,        "skipped": 0,        "failed": 0    },    "hits": {        "total": 0,        "max_score": 0,        "hits": []    },    "suggest": {        "blog-suggest": [            {                "text": "北京",                "offset": 0,                "length": 2,                "options": [                    {                        "text": "北京天安门",                        "_index": "jzbsearch",                        "_type": "completion",                        "_id": "AWK9FJDeGCbNhyb_l9I6",                        "_score": 1,                        "_source": {                            "title": "北京天安门",                            "title_suggest": "北京天安门"                        }                    },                    {                        "text": "北京奥林匹克公园",                        "_index": "jzbsearch",                        "_type": "completion",                        "_id": "AWK9FJDeGCbNhyb_l9I-",                        "_score": 1,                        "_source": {                            "title": "北京奥林匹克公园",                            "title_suggest": "北京奥林匹克公园"                        }                    },                    {                        "text": "北京鸟巢",                        "_index": "jzbsearch",                        "_type": "completion",                        "_id": "AWK9FJDeGCbNhyb_l9I7",                        "_score": 1,                        "_source": {                            "title": "北京鸟巢",                            "title_suggest": "北京鸟巢"                        }                    }                ]            }        ]    }}

参考链接:

转载于:https://my.oschina.net/u/2299936/blog/1800139

你可能感兴趣的文章
Python-w3
查看>>
jpeg note
查看>>
一个例子告诉你什么是CLR(JVM同理),以及版本兼容
查看>>
文章记录
查看>>
ESXi中的虚拟机如何使用U盘
查看>>
把别人的Tcl/Tk代码加入到Go语言里13 游戏6 消除方块
查看>>
zend studio中vim的安装
查看>>
实施微服务,我们需要哪些基础框架
查看>>
Linux 简单创建用户并指定文件夹权限
查看>>
openstack cobbler Icehouse ks 配置文件
查看>>
C++基本的数据类型
查看>>
Thinkphp 5.0实战 仿百度糯米开发多商家电商平台
查看>>
oracle10 ora-12154错误的解决办法
查看>>
OpenStack 架构 - 每天5分钟玩转 OpenStack(15)
查看>>
DotProject环境搭建
查看>>
linux学习二
查看>>
关于form表单的reset功能无法还原hidden中的值
查看>>
搞PHP怎么不知道CURL呢,呵呵。。。。。
查看>>
希捷硬盘1T挂了(1)
查看>>
关闭ADOX.Catalog创建Access的链接,避免ldb锁定
查看>>