Elasticsearch教程,Elasticsearch 设置近义词搜索,IK分词器实现同义词搜索
要实现Elasticsearch 近义词匹配搜索,我们要有分词器,本篇博客使用的是IK
分词器,其次 Elasticsearch 的版本是2.x
,Elasticsearch
具体版本是2.0.2
。
如果没有安装Elasticsearch
和IK
分词器,请参考下面的入门教程。
- Elasticsearch教程(一),全程直播(小白级别)
- Elasticsearch教程(二),IK分词器安装
- Elasticsearch教程(三),IK分词器安装 (极速版)
- Elasticsearch安装(四), elasticsearch head 插件安装和使用。
- Elasticsearch教程(五) elasticsearch Mapping的创建
- Elasticsearch教程(六) elasticsearch Client创建
- Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)
- Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
- Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
安装完毕后,我们就开始了。再次申明一下,这个实现过程很简单,我也帮你踩过雷了,所以坚持照做下去,一定会成功。
先说下需求和具体业务,我在做本站的站内搜索的时候,发现我写的教程都是 Elasticsearch 关键词,而不是ES
,而我们有的时候习惯去用ES
搜索,所以我希望他们能关联起来,如下需求。
搜索ES
教程,结果能出来 Elasticsearch教程 。
搜索JS
教程,结果能出来 Javascript 教程和脚本教程。
开始了。
一、Elasticsearch配置文件更改
首先在 Elasticsearch 的config
目录下配置如下配置:
$: vi elasticsearch/config/elasticsearch.yml
在最下面加上下面的配置:
#在最下面加上下面的代码
index:
analysis:
analyzer:
ik_syno:
type: custom
tokenizer: ik_max_word
filter: [my_synonym_filter]
ik_syno_smart:
type: custom
tokenizer: ik_smart
filter: [my_synonym_filter]
filter:
my_synonym_filter:
type: synonym
synonyms_path: ik/config/synonym.txt
二、添加 IK 同义词库
上面配置了一行 ik/config/synonym.txt
,所以我们在elasticsearch.yml
同级目录下创建目录ik/config/
,然后创建文件synonym.txt
。
然后编辑synonym.txt
,输入我们的同义词。
[elasticsearch@admin config]$ vi ik/config/synonym.txt
es,search,elasticsearch
脚本,js,javascript
用英文逗号间隔,一行为同义词。
保存后重启 Elasticsearch ,然后创建Mapping 。
三、Java API 创建Mapping
上一篇已经讲到了,所以还请看一遍。需要指定我们的 index
分词器,和search
分词器。详细请看:Elasticsearch Java API创建Mapping,指定分词器
下面是主要代码。
.startObject("title")
.field("type","string")
.field("store", "yes")
//指定index analyzer 为 ik_syno
.field("analyzer", "ik")
//指定search_analyzer 为ik_syno
.field("searchAnalyzer", "ik_syno")
.endObject()
四、Elasticsearch插入数据测试
测试搜索一下ES教程,看看结果。
再测试下js教程关键词。
好了,收工,想要看看具体的效果,请在本站使用快捷键,Ctrl + F
,搜索试试,功能今天晚上上线,2017年5月25日 14:55:17。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/233.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。