Elasticsearch 配置同义词
- 配置近义词
- 近义词组件已经是elasticsearch自带的了,所以不需要额外安装插件,但是想要让近义词和IK一起使用,就需要配置自己的分析器了。
- 首先创建近义词文档
- 在config目录下
- mkdir analysis
- vim analysis/synonym.txt
- 编辑:
- i-pod, i pod, i pad => ipod,
- sea biscuit, sea biscit => seabiscuit,
- 中文,汉语,汉字
- 这里可以看到近义词的写法有两种:
- a,b => c
- a,b,c
- 第一种在分词的时候,a,b都会解析成为c,然后把c存入索引中
- 第二种在分词的时候,有a的地方,都会解析成a,b,c,把a,b,c存入索引中
- 第一种方法相比之下有个主词,比较省索引。
- 配置elasticsearch.yml中的自定义索引,和前面的ik结合,可以这么设置:
- index:
- analysis:
- analyzer:
- ik:
- alias: [ik_analyzer]
- type: org.elasticsearch.index.analysis.IkAnalyzerProvider
- ik_max_word:
- type: ik
- use_smart: false
- ik_smart:
- type: ik
- use_smart: true
- my_synonyms:
- tokenizer: standard
- ik_syno:
- type: custom
- tokenizer: ik
- filter: [my_synonym_filter]
- ik_syno_smart:
- type: custom
- tokenizer: ik
- filter: [my_synonym_filter]
- use_smart: true
- filter:
- my_synonym_filter:
- type: synonym
- synonyms_path: analysis/synonym.txt
- 上面的配置文件创建了一个filter: my_synonym_filter, 然后创建了两个自定义analyzer: ik_syno和ik_syno_smart
- 启动elasticsearch:
- bin/elasticsearch
- 案例测试
- 按照上面的配置,我们使用一个具体的句子进行测试:
- 120.55.72.158:/elasticsearchtest2
- {
- "index" : {
- "analysis" : {
- "analyzer" : {
- "ik_syno" : {
- "tokenizer" : "ik",
- "filter" : ["my_synonym_filter"]
- }
- }
- }
- }
- }
- curl -XPOST "192.168.33.10:9200/elasticsearchtest/_analyze?analyzer=ik_syno" -d 'we are eng man i pad 汉语文字'
- 返回json结构:
- {
- "tokens": [
- {
- "token": "we",
- "start_offset": ,
- "end_offset": ,
- "type": "ENGLISH",
- "position":
- },
- {
- "token": "eng",
- "start_offset": ,
- "end_offset": ,
- "type": "ENGLISH",
- "position":
- },
- {
- "token": "man",
- "start_offset": ,
- "end_offset": ,
- "type": "ENGLISH",
- "position":
- },
- {
- "token": "ipod",
- "start_offset": ,
- "end_offset": ,
- "type": "SYNONYM",
- "position":
- },
- {
- "token": "中文",
- "start_offset": ,
- "end_offset": ,
- "type": "SYNONYM",
- "position":
- },
- {
- "token": "汉语",
- "start_offset": ,
- "end_offset": ,
- "type": "SYNONYM",
- "position":
- },
- {
- "token": "汉字",
- "start_offset": ,
- "end_offset": ,
- "type": "SYNONYM",
- "position":
- },
- {
- "token": "文字",
- "start_offset": ,
- "end_offset": ,
- "type": "CN_WORD",
- "position":
- }
- ]
- }
- 这里就可以看到我们之前配置的东西都成功了:
- are字被过滤,是由于are字是stop_words
- i pad这个词语被转化为了ipod是由于近义词字典中我们设置了 i pad=>ipod
- “文字”两个中文字是被分成一个中文词切割,是因为ik的默认main.dic里面有文字两个字
- “中文”“汉字”“汉语”三个词出现是由于近义词字典中我们设置了这三个为同等级的近义词
参考文献:
http://www.cnblogs.com/yjf512/p/4789239.html
Elasticsearch 配置同义词的更多相关文章
- [大数据]-Logstash-5.3.1的安装导入数据到Elasticsearch5.3.1并配置同义词过滤
阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置,前面介绍了ES,Kibana5.3.1的安装配置,以及IK分词的安装和同义词设置,这里主要记录L ...
- elasticsearch ik同义词
由于elasticsearch 更新实在太快,配置同义词的资料层次不齐,费尽千辛万苦终于找到了.本文通过一个同义词搜索的简单实例来说明ik同义词的配置. 环境介绍 这点很重要,本文是基于elastic ...
- elasticsearch 使用同义词
elasticsearch 使用同义词 使用环境 elasticsearch5.1.1 kibana5.1.1 同义词插件5.1.1 安装插件 下载对应的elasticsearch-analysis- ...
- ElasticSearch 配置详解
配置文件位于es根目录的config目录下面,有elasticsearch.yml和logging.yml两个配置,主配置文件是elasticsearch.yml,日志配置文件是logging.yml ...
- Elasticsearch 配置
Elasticsearch 配置 Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展 ...
- elasticsearch配置
配置文件详解1.0版 配置文件位于es根目录的config目录下面,有elasticsearch.yml和logging.yml两个配置,主配置文件是elasticsearch.yml,日志配置文件是 ...
- elasticsearch配置详解
一.说明 使用的是新版本5.1,直接从官网下载rpm包进行安装,https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5 ...
- Elasticsearch配置参数介绍
Elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml.第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来 ...
- solr-用mmseg4j配置同义词索引和检索(IKanlyzer需要修改源码适应solr接口才能使用同义词功能)
概念说明:同义词大体的意思是指,当用户输入一个词时,solr会把相关有相同意思的近义词的或同义词的term的语段内容从索引中取出,展示给用户,提高交互的友好性(当然这些同义词的定义是要在配置文件中事先 ...
随机推荐
- Linux中添加快捷
执行操作比较快捷: 1.R3 CGP平台下OMU系统中: Linux 版本:2.6.16.60-0.21-bigsmp vi /etc/profile 2.R2 Linux版本2.6.5-7.244- ...
- Java 内部线程
InsttoolCacheScheduler_ Worker-2 Quartz InsttoolCacheScheduler_Worker-2线程就是ThreadPool线程的一个简单实现,它主要负责 ...
- 远程操作与端口转发 SSH原理与运用
SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一节的操作,就是一个例子: $ ssh user@host 'mkdir -p .ssh && cat >&g ...
- thinkphp 对百度编辑器里的内容进行保存
模板代码 <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="U ...
- 关于Unity中的特殊文件目录和资源管理(专题四)
编辑器扩展目录: 1: Editor目录 Editor文件夹可以在根目录下,也可以在子目录里,夹就可以; Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用; ...
- android地址位置
有精度纬度确定地理位置 latitude: 23.1352888---longitude: 113.3297445 调用Google API接口: URL: http://maps.google.cn ...
- ndarray的数据类型
dtype参数 案例1: dtype(数据类型) 是一个特殊的对象,它含有ndarray , 将一块内存解释为特定数据类型所需的信息. 案例2: 利用astype 方法显式地转换其dtype 注意: ...
- 传统餐饮O2O支付体系成难题
传统餐饮O2O支付体系成难题 网的数据化参考,使得门店运营更具科学性. 作为“易淘食”这样的订餐网站,主要依靠与餐厅分成 来获得利润.“根据每个餐厅合作情况不同,每一笔订单我们可获得5%-15%的佣金 ...
- Linux C语言连接 sqlserver数据库
记录一下Linux下使用C语言连接sqlserver的方法. 连接前需要安装freetds. 参考: http://www.cnblogs.com/helloworldtoyou/p/6910075. ...
- objective-C 的内存管理之-自动释放池(autorelease pool)
如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣.但是有些时候,想知道某个对象在什么时候 ...