当前位置:首页 > 服务端 > elasticsearch安装ansj分词器

elasticsearch安装ansj分词器

2022年11月09日 22:34:09服务端12

1、概述

   elasticsearch用于搜索引擎,需要设置一些分词器来优化索引。常用的有ik_max_word: 会将文本做最细粒度的拆分、ik_smart: 会做最粗粒度的拆分、ansj等。

   ik下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases

   ansj下载地址:https://github.com/NLPchina/elasticsearch-analysis-ansj

   安装的时候一定要安装相对应的版本,并且解压完成后一定要报安装包移到其他目录或直接删除,plugins目录下只能包含分词器的目录。否则启动会报错,尤其是docker环境,如果没能映射plugins目录的话,就只能重新创建容器了。

本文以5.2版本为例,讲解安装ansj分词,并将其设置为默认分词器。注意5.x版本以后不再支持在elasticsearch.yml里面设置默认分词器,只能通过API的方式进行设置

Since elasticsearch 5.x index level settings can NOT be set on the nodes
configuration like the elasticsearch.yaml, in system properties or command line
arguments.In order to upgrade all indices the settings must be updated via the
/${index}/_settings API. Unless all settings are dynamic all indices must be closed
in order to apply the upgradeIndices created in the future should use index templates
to set default values.

 

2、安装

#./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.2.2/elasticsearch-analysis-ansj-5.2.2.0-release.zip

然后进行解压:
#unzip elasticsearch-analysis-ansj-5.2.2.0-release.zip && rm -rf elasticsearch-analysis-ansj-5.2.2.0-release.zip
#mv elasticsearch elasticsearch-analysis-ansj

重启服务,加载分词器设置。

设置为默认得分词器:
# curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
  "index.analysis.analyzer.default.type" : "index_ansj",
  "index.analysis.analyzer.default_search.type" : "query_ansj"
}'

出现如下报错:
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Can't update non dynamic settings [[index.analysis.analyzer.default_search.type]] for open indices

不支持动态设置,indecis处于开启状态,需要先关闭,在进行设置,设置完成后在打开。这种通过API设置的方式不需要重启elsatisearch。线上的集群最好不要重启,加载索引的时间会很久并且会引发一些错误。

# curl -XPOST 'localhost:9200/_all/_close'

# curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
  "index.analysis.analyzer.default.type" : "index_ansj",
  "index.analysis.analyzer.default_search.type" : "query_ansj"
}'

# curl -XPOST 'localhost:9200/_all/_open'

6.x版本后执行put命令:
6.x版本以后修改或写入数据到es,都要使用-H'Content-Type: application/json'。参考地址:
https://www.elastic.co/blog/strict-content-type-checking-for-elasticsearch-rest-requests

#curl -XPUT -H'Content-Type: application/json' 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
  "index.analysis.analyzer.default.type" : "index_ansj",
  "index.analysis.analyzer.default_search.type" : "query_ansj"
}'

##设置停用词,stopwords:
stopwords用来在搜索时被过滤掉。如设置stopwords为“老”,则在搜索时“老师”,只能搜索出“师”。
本文据一个去除空格的例子:
修改
elasticsearch-analysis-ansj的配置文件:

# cat ansj.cfg.yml
# 全局变量配置方式一
ansj:
#默认参数配置
isNameRecognition: true #开启姓名识别
isNumRecognition: true #开启数字识别
isQuantifierRecognition: true #是否数字和量词合并
isRealName: false #是否保留真实词语,建议保留false

#用户自定词典配置
dic: file://usr/share/elasticsearch/plugins/elasticsearch-analysis-ansj/default.dic #也可以写成 file://default.dic , 如果未配置dic,则此词典默认加载
# http方式加载
#dic_d1: http://xxx/xx.dic
# jar中文件加载
#dic_d2: jar://org.ansj.dic.DicReader|/dic2.dic
# 从数据库中加载
#dic_d3: jdbc:mysql://xxxx:3306/ttt?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull|username|password|select name as name,nature,freq from dic where type=1
# 从自定义类中加载,YourClas extends PathToStream
#dic_d3: class://xxx.xxx.YourClas|ohterparam

#过滤词典配置
#stop: http,file,jar,class,jdbc 都支持
#stop_key1: ...
stop: file://usr/share/elasticsearch/plugins/elasticsearch-analysis-ansj/stop.dic
#歧义词典配置
#ambiguity: http,file,jar,class,jdbc 都支持
#ambiguity_key1: ...

#同义词词典配置
#synonyms: http,file,jar,class,jdbc 都支持
#synonyms_key1: ...

 

# 全局变量配置方式二 通过配置文件的方式配置,优先级高于es本身的配置
#ansj_config: ansj_library.properties #http,file,jar,class,jdbc 都支持,格式参见ansj_library.properties

# 配置自定义分词器

 

index:
analysis:
tokenizer :
my_dic :
type : dic_ansj
dic: dic
stop: stop
ambiguity: ambiguity
synonyms: synonyms
isNameRecognition: true
isNumRecognition: true
isQuantifierRecognition: true
isRealName: false

analyzer:
my_dic:
type: custom
tokenizer: my_dic

 
添加stop: file://usr/share/elasticsearch/plugins/elasticsearch-analysis-ansj/stop.dic这样一行内容,然后在相应的位置创建stop.dic文件,字符编码为utf-8。
想要过滤空格需要使用正则表达式,编辑器将制表符翻译成空格,所以过滤空格的语法为:\s+[tab]regex,其中[tab]代表按一下tab键。即在stop.dic文件里面\s+和regex之间需要按一个tab键代表过滤空格。

# cat stop.dic
\s+  regex



参考地址:
https://github.com/NLPchina/elasticsearch-analysis-ansj
http://pathbox.github.io/work/2017/09/13/elasticsearch-5.5.2-install-and-config.html
https://stackoverflow.com/questions/19758335/error-when-trying-to-update-the-settings/24414375
https://www.elastic.co/blog/strict-content-type-checking-for-elasticsearch-rest-requests

作者:诗码者
来源链接:https://www.cnblogs.com/cuishuai/p/8404728.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/69120.html

分享给朋友:

“elasticsearch安装ansj分词器” 的相关文章

Python解释器安装教程以及环境变量配置 以及 pycharm的安装与激活

Python解释器安装教程以及环境变量配置 以及 pycharm的安装与激活

计算机的组成 主板:人的骨架,用于拓展设备 CPU:人的大脑,用于计算和逻辑处理 硬盘:存储数据(永久储存),比如电脑上的 C盘,D盘 内存:临时记忆(断电即消失) 操作系统:XP win7 win10 Mac linux 主要是承上启下...

python解释器安装教程以及环境变量的配置

python解释器安装教程以及环境变量的配置

一‘’Python是一门强大的语言,目前已支持所有主流操作系统,在Windows7,Windows10系统上需要安装一下: 打开官网 https://www.python.org/downloads/windows/ 下载中心 最上边是两个最新的版本,长期计划...

Git的安装教程(完成clone一个项目到本地)

Git的安装教程(完成clone一个项目到本地)

官网下载安装包地址:点击进入 https://git-scm.com/download/win 但是官网下载比较慢,我们这里选择国内阿里镜像点击进入 https://npm.taobao.org/mirro...

Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – 《史蒂夫·乔布斯传》 』 运行环境:JDK 7 或 8,Maven 3.0+ 技术栈:SpringBoot 1...

SpringBoot集成ElasticsearchRestTemplate

SpringBoot集成ElasticsearchRestTemplate

SpringBoot集成ElasticsearchRestTemplate 具体使用操作 SpringBoot版本和ES版本对应 使用ES前,看好自己SpringBoot版本和ES版本 (我这是使用的springboot版本是:...

~~Python解释器安装教程及环境变量配置~~

~~Python解释器安装教程及环境变量配置~~

进击のpython ***** Python解释器安装教程以及环境变量配置 对于一个程序员来说,能够自己配置python解释器是最基础的技能 那么问题来了,现在市面上有两种Python版本 Python 2.x 和 Python 3.x...

IDEA社区版下载安装教程

IDEA社区版下载安装教程

一.安装IDEA 官网选社区版下载,选择安装路径后 打开IDEA后由于第一次使用,就选Do not import settings confirm协议后选择主题风格 二.新建工程 下面点击next...

IDEA重新激活JRebel方法

IDEA重新激活JRebel方法

笔者最近的JRebel激活失效了很不爽啊。 尝试了几次激活,都以失败告终.... 后面找到了官方文档,看了一下需要手动删除.... 先使用上面的命令删除,本地的许可证 再使用上面的命令重新设置一下,就可以了 从理论上讲是这么一回事,可...

IntelliJ IDEA 激活码,免费的就是香,1分钟快速激活IDEA!

IntelliJ IDEA 激活码,免费的就是香,1分钟快速激活IDEA!

一、IntelliJ IDEA 激活码 下边的 IDEA 激活码失效了的话,请关注微信公众号:码农code之路,然后发送“ 激活码 ”即可获取最新且有效的。 二、免费的就是香,1分钟快速激活IDEA YT8MCJ1MVC-eyJsaWNlb...

python的IDE工具-- Pycharm

python的IDE工具-- Pycharm

我们可以在python的交互环境下编写执行代码,但这只是适合短的代码,当有长的代码时在这里编写就不方便, Python有自带的IDE,根据自己使用的情况来看,感觉Pycharm这款IDE比自带的IDE好用,下面介绍Pycharm 的下载及安装: 1、下载 登录P...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。