安装elasticsearch-1.7.1及中文IK和近义词配置
安装elasticsearch及中文IK和近义词配置
https://www.cnblogs.com/yjf512/p/4789239.html
安装elasticsearch及中文IK和近义词配置
安装java环境
java环境是elasticsearch安装必须的
yum install java-1.8.0-openjdk
安装elasticsearch
其实es的安装非常简单了
https://www.elastic.co/downloads/elasticsearch
cd /tmp
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.tar.gz
tar -xf elasticsearch-1.7.1.tar.gz
mv /tmp/elasticsearch-1.7.1 /usr/local/
ln -s /usr/local/elasticsearch-1.7.1 /usr/local/elasticsearch
安装head插件
head插件让我们能更简单管理elasticsearch
cd /usr/local/elasticsearch
./bin/plugin --install mobz/elasticsearch-head
访问 http://192.168.33.10:9200/_plugin/head/ 可以访问
安装IK插件
去rtf项目中获取对应插件,建议别去自己找plugin下,medcl大已经为我们准备好了一切
cd /tmp
wget https://github.com/medcl/elasticsearch-rtf/archive/master.zip
unzip elasticsearch-rtf-master.zip
cd elasticsearch-rtf-master
cp -rf config/ik /usr/local/elasticsearch/config/
cp -rf plugins/analysis-ik /usr/local/elasticsearch/plugins/
vim /usr/local/elasticsearch/config/elasticsearch.yml
增加:
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
配置近义词
近义词组件已经是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:9700/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": 0,
"end_offset": 2,
"type": "ENGLISH",
"position": 1
},
{
"token": "eng",
"start_offset": 7,
"end_offset": 10,
"type": "ENGLISH",
"position": 2
},
{
"token": "man",
"start_offset": 11,
"end_offset": 14,
"type": "ENGLISH",
"position": 3
},
{
"token": "ipod",
"start_offset": 15,
"end_offset": 20,
"type": "SYNONYM",
"position": 4
},
{
"token": "中文",
"start_offset": 21,
"end_offset": 23,
"type": "SYNONYM",
"position": 5
},
{
"token": "汉语",
"start_offset": 21,
"end_offset": 23,
"type": "SYNONYM",
"position": 5
},
{
"token": "汉字",
"start_offset": 21,
"end_offset": 23,
"type": "SYNONYM",
"position": 5
},
{
"token": "文字",
"start_offset": 23,
"end_offset": 25,
"type": "CN_WORD",
"position": 6
}
]
}
这里就可以看到我们之前配置的东西都成功了:
are字被过滤,是由于are字是stop_words
i pad这个词语被转化为了ipod是由于近义词字典中我们设置了 i pad=>ipod
“文字”两个中文字是被分成一个中文词切割,是因为ik的默认main.dic里面有文字两个字
“中文”“汉字”“汉语”三个词出现是由于近义词字典中我们设置了这三个为同等级的近义词
安装elasticsearch-1.7.1及中文IK和近义词配置的更多相关文章
- 安装elasticsearch及中文IK和近义词配置
安装elasticsearch及中文IK和近义词配置 安装java环境 java环境是elasticsearch安装必须的 yum install java-1.8.0-openjdk 安装elast ...
- 【中文同义词近义词】词向量 vs 同义词近义词库
方案一:利用预训练好的词向量模型 优点: (1)能把词进行语义上的向量化(2)能得到词与词的相似度 缺点: (1)词向量的效果和语料库的大小和质量有较大的关系(2)用most_similar() 得到 ...
- 使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用
原文:使用Docker 安装Elasticsearch.Elasticsearch-head.IK分词器 和使用 Elasticsearch的安装 一.elasticsearch的安装 1.镜像拉取 ...
- windows 环境下安装elasticsearch ,ik,head,marvel
elasticsearch 自带的中分分词器将会使中文分成一个一个的单词,需要安装ik分词等,ik分词分为 ik_smart(粗粒度分词),ik_max_word(细粒度分词)两种模式. 1:首先安 ...
- Elasticsearch教程(二),IK分词器安装
elasticsearch-analysis-ik 是一款中文的分词插件,支持自定义词库,也有默认的词库. 开始安装. 1.下载 下载地址为:https://github.com/medcl/ela ...
- Elasticsearch教程(三),IK分词器安装 (极速版)
如果只想快速安装IK,本教程管用.下面看经过. 简介: 下面讲有我已经打包并且编辑过的zip包,你可以在下面下载即可. 当前讲解的IK分词器 包的 version 为1.8. 一.下载zip包. 下面 ...
- 通过docker安装elasticsearch和安装ik分词器插件及安装kibana
前提: 已经安装好docker运行环境: 步骤: 1.安装elasticsearch 6.2.2版本,目前最新版是7.2.0,这里之所以选择6.2.2是因为最新的SpringBoot2.1.6默认支持 ...
- 安装elasticsearch
安装elasticsearch 来自:http://www.cnblogs.com/huangfox/p/3541300.html 一)安装elasticsearch 1)下载elasticsea ...
- Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)
一.先摆需求: 1.中文搜索.英文搜索.中英混搜 如:"南京东路","cafe 南京东路店" 2.全拼搜索.首字母搜索.中文+全拼.中文+首字母混搜 如 ...
随机推荐
- .scripts/mysql_install_db: 没有那个文件或目录
.scripts/mysql_install_db: 没有那个文件或目录 查了好多地方,在书上找到了解决方案,太不容易了 原因与解决方法: 系统与MYSQL版本不同,系统64位使用64位MYSQL,3 ...
- Java反射的两种使用方法
1.创建User.java package com.tao.test; public class User { private String name; private int id; public ...
- 微信小程序横向滚动
<scroll-view scroll-x="true" style=" white-space: nowrap; display: flex" > ...
- php+sqlserver处理读取decimal 类型数据,不满1的数字会去掉0的问题
php+sqlserver处理读取decimal 类型数据,如果数据不满1,会去掉0的问题.比如读取的数据是 0.05,会显示 .05 function convert_number($number) ...
- 二、Django需要的知识点
1.请求(request): 客户端到服务器端. 响应(response):服务器端到客户端. HTTP/1.1 协议共定义了 8 种请求方式,分别是: OPTIONS. HEAD. GET. POS ...
- ruby 第三方模块unirest使用
Creating Requests require 'unirest' response = Unirest.post 'http://httpbin.org/post', headers:{ Acc ...
- debounce、throttle、requestAnimationFrame
今天review同事代码,代码实现了返回顶部的功能,用到了lodash库中的throttle,我看着眼生,于是乎去看了下lodash文档,然后牵出了debounce,具体的知识点,这里不再赘述,底部的 ...
- python2.7练习小例子(十七)
17):题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 程序分析: ...
- Android Studio modify language level to Java 8
If you need use lambda, should modify language level File -> Project Structure -> app -> Pr ...
- Electron入门应用打包exe(windows)
最近在学习nodejs,得知Electron是通过将Chromium和Node.js合并到同一个运行时环境中,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一门技术.对于之前一直从 ...