Surprised => indulgence => Calm => Lost => Panic =>Calm

【转载】elasticsearch 搜索补全

Java imekaku 812℃ 0评论

Suggest As You Type,即在用户输入搜索的过程中,进行自动补全或者纠错。

参考地址:

Elasticsearch Suggester详解 https://elasticsearch.cn/article/142

为Elasticsearch添加中文分词 http://keenwon.com/1404.html

Suggesters API

  1. Term Suggester
  2. Phrase Suggester
  3. Completion Suggester
  4. Context Suggester

Term Suggester

创建索引

bulk api 导入数据

这里需要注意的是,需要在完成一次操作之后,添加一行空格

https://stackoverflow.com/questions/35840740/bulk-indexing-using-elastic-search

每一个操作都有2行数据组成,末尾要回车换行。第一行用来说明操作命令和原数据、第二行是自定义的选项。

http://blog.csdn.net/napoay/article/details/51907709

使用suggester搜索

suggest就是一种特殊类型的搜索,DSL内部的”text”指的是api调用方提供的文本,也就是通常用户界面上用户输入的内容。这里的lucne是错误的拼写,模拟用户输入错误。 “term”表示这是一个term suggester。 “field”指定suggester针对的字段,另外有一个可选的”suggest_mode”。 范例里的”missing”实际上就是缺省值

https://elasticsearch.cn/article/142

返回结果

my-suggestion中的 text的内容是用户输入,options text中的内容是建议项。

suggest_mode 还有popular,always

Term suggester正如其名,只基于analyze过的单个term去提供建议,并不会考虑多个term之间的关系

Phrase suggester

Phrase suggester在Term suggester的基础上,会考量多个term之间的关系,比如是否同时出现在索引的原文里,相邻程度,以及词频等等

返回结果:

Completion Suggester

Completion Suggester,它主要针对的应用场景就是”Auto Completion”。 此场景下用户每输入一个字符的时候,就需要即时发送一次查询请求到后端查找匹配项,在用户输入速度较高的情况下对后端响应速度要求比较苛刻。因此实现上它和前面两个Suggester采用了不同的数据结构,索引并非通过倒排来完成,而是将analyze过的数据编码成FST和索引一起存放。对于一个open状态的索引,FST会被ES整个装载到内存里的,进行前缀查找速度极快。但是FST只能用于前缀查找,这也是Completion Suggester的局限所在。

https://elasticsearch.cn/article/142

创建索引

导入数据

注意点同理

查找

结果

转载请注明:Imekaku-Blog » 【转载】elasticsearch 搜索补全

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址