Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

tmpcode/elasticsearch-analysis-ansj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

137 Commits

Repository files navigation

##前言

这是一个elasticsearch的中文分词插件,基于ansj,感谢群内热心的朋友。 并宣传一下我们的群QQ211682609

版本对应

plugin elasticsearch
1.0.0 0.90.2
1.x 1.x
2.1.1 2.1.1
2.3.1 2.3.1
2.3.2 2.3.2
2.3.3 2.3.3
2.3.4 2.3.4
2.3.5 2.3.5
2.4.0 2.4.0
2.4.1 2.4.1
5.0.0 5.0.0
master 5.0.1

##5.0.1 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/elasticsearch-plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/5.0.1.0/elasticsearch-analysis-ansj-5.0.1.0-release.zip

##5.0.0 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/elasticsearch-plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/5.0.0.0/elasticsearch-analysis-ansj-5.0.0.0-release.zip

##2.4.1 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.4.1.0/elasticsearch-analysis-ansj-2.4.1.0-release.zip

##2.4.0 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.4.0.3/elasticsearch-analysis-ansj-2.4.0.3-release.zip

##2.3.5 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.3.5.3/elasticsearch-analysis-ansj-2.3.5.3-release.zip

##2.3.4 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.3.4/elasticsearch-analysis-ansj-2.3.4-release.zip

##2.3.3 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.3.3.3/elasticsearch-analysis-ansj-2.3.3.3-release.zip

##2.3.2 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.3.2.1/elasticsearch-analysis-ansj-2.3.2.1-release.zip

##2.3.1 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.3.1/elasticsearch-analysis-ansj-2.3.1-release.zip

##2.1.1 插件安装

进入Elasticsearch目录运行如下命令

进入es目录执行如下命令
./bin/plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.1.1/elasticsearch-analysis-ansj-2.1.1-release.zip

##1.x 插件安装

进入Elasticsearch目录运行如下命令

./bin/plugin -u http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/1.x.1/elasticsearch-analysis-ansj-1.x.1-release.zip -i ansj

==========

2016年11月11日

  • elasticsearch更新至5.0.0
  • ansj_seg升级至5.0.4
  • 新增配置文件config/ansj.cfg.yml

2016年04月16日

  • elasticsearch更新2.3.1
  • ansj_seg升级至3.7.3

1770年01月01日

  • elasticsearch更新2.1.1
  • ansj_seg升级至3.5
  • 新增http的_ansj接口,用于查看ansj分词词性
  • 新增http的_cat/ansj接口,作用同上,显示为cat方式
  • 新增http的_cat/[index]/analyze接口,和_analyze作用一样,显示为cat方式
  • 更方便的配置

先来点配置好的示例 ^ ^ 别吐槽我的格式化 (顺便求一个判断字符串中含有几个中文的方法)

测试

  • 创建测试索引
curl -XPUT 127.0.0.1:9200/test -d '{
 "settings" : {
 "number_of_shards" : 1,
 "number_of_replicas" : 0
 },
 "mappings" : {
 "test" : {
 "_all" : { "enabled" : false },
 "properties" : {
 "name" : { "type" : "string", "analyzer" : "index_ansj", "search_analyzer" : "query_ansj" }
 }
 }
 }
}'
  • 添加索引内容
curl -XPUT 'http://127.0.0.1:9200/test/test/1' -d '{
 "name" : "中国人民万岁",
 "post_date" : "2009-11-15T14:12:12",
 "message" : "trying out Elasticsearch"
}'
  • 查询索引
浏览器访问:
http://127.0.0.1:9200/test/test/_search?q=name:%E4%B8%AD%E5%9B%BD
  • 如果你想把ansj作为你的默认分词需要在elasticsearch.yml加入如下配置:
#默认分词器,索引
index.analysis.analyzer.default.type: index_ansj
#默认分词器,查询
index.analysis.analyzer.default_search.type: query_ansj

关于分词器不得不说的那点小事

目前默认内置三个分词器
当然如果你有心仔细观察日志看到了实例化了n多分词器如下
 regedit analyzer named : index_ansj
 regedit analyzer named : query_ansj
 regedit analyzer named : to_ansj
 regedit analyzer named : dic_ansj
 regedit analyzer named : user_ansj
 regedit analyzer named : search_ansj
why????
额 只有三个其他都是别名

索引分词

index_ansj 是索引分词,尽可能分词处所有结果 example
http://127.0.0.1:9200/_cat/test/analyze?text=%E5%85%AD%E5%91%B3%E5%9C%B0%E9%BB%84%E4%B8%B8%E8%BD%AF%E8%83%B6%E5%9B%8A&analyzer=index_ansj
六味 		0		2		0		word		
地 		2		3		1		word		
黄丸软 		3		6		2		word		
胶囊 		6		8		3		word		
六味地黄		0		4		4		word		
地黄 		2		4		5		word		
地黄丸 		2		5		6		word		
软胶 		5		7		7		word		
软胶囊 		5		8		8		word			

搜索分词 (search_ansj=to_ansj=query_ansj)

query_ansj 是搜索分词,是索引分词的子集,保证了准确率 example
http://127.0.0.1:9200/_cat/test/analyze?text=%E5%85%AD%E5%91%B3%E5%9C%B0%E9%BB%84%E4%B8%B8%E8%BD%AF%E8%83%B6%E5%9B%8A&analyzer=query_ansj
六味 		0		2		0		word		
地 			2		3		1		word		
黄丸软		3		6		2		word		
胶囊 		6		8		3		word		

用户自定义词典优先的分词方式 (user_ansj=dic_ansj)

dic_ansj 是用户自定义词典优先策略
http://127.0.0.1:9200/_cat/test/analyze?text=%E5%85%AD%E5%91%B3%E5%9C%B0%E9%BB%84%E4%B8%B8%E8%BD%AF%E8%83%B6%E5%9B%8A&analyzer=dic_ansj
六味地黄		0		4		0		word		
丸 		4		5		1		word		
软胶囊 		5		8		2		word		

编译安装

  • 第一步,你要有一个elasticsearch的服务器(废话) 版本2.1.1

  • 第二步,把代码clone到本地

  • 第三步,mvn clean install

  • 第四步,进入$Project_Home/target/releases 目录,

  • 第五步,拷贝$Project_Home/target/releases/目录下的zip包到解压到$ES_HOME/plugins目录下

现在,你的es集群已经有下面三个名字的analyzer

  • index_ansj (建议索引使用)
  • query_ansj (建议搜索使用)
  • dic_ansj

三个名字的tokenizer

  • index_ansj (建议索引使用)
  • query_ansj (建议搜索使用)
  • dic_ansj

分词文件配置:

在这里我说一下,在插件里我写了一些默认配置,如果你也可以接受我的默认配置,关于ansj就完全不用配置了,或者只修改你需要的配置。下面的代码目录都是相对es的config目录,有几点需要注意一下:

  • ansj的核心词典是和插件一起安装的在插件目录下面
  • 由于使用redis的pubsub功能,需要相关权限控制,安装的时候必须获得允许,而2.3.3.2以前的版本需要加./elasticsearch -Des.security.manager.enabled=false参数才能解决
  • 请慎重使用redis的pubsub功能
  • 5.0.0版本新增配置文件config/ansj.cfg.yml,需要放入$ES_HOME/config/analysis-ansj/ansj.cfg.yml或者$ES_HOME/plugins/elasticsearch-analysis-ansj-*/config/ansj.cfg.yml
## ansj配置
ansj:
 dic_path: "ansj/dic/user/" ##用户词典位置
 ambiguity_path: "ansj/dic/ambiguity.dic" ##歧义词典
 enable_name_recognition: true ##人名识别
 enable_num_recognition: true ##数字识别
 enable_quantifier_recognition: false ##量词识别
 enabled_stop_filter: true ##是否基于词典过滤
 enable_skip_user_define: false ## 是否用户词典不加载相同的词
 stop_path: "ansj/dic/stopLibrary.dic" ##停止过滤词典
## redis 不是必需的
 redis:
 pool:
 maxactive: 20
 maxidle: 10
 maxwait: 100
 testonborrow: true
 ip: 10.0.85.51:6379
 timeout: 2000
 #password: "******" ## 不要添加这个配置,除非redis需要权限认证
 channel: ansj_term ## publish时的channel名称
 write:
 dic: "ext.dic" ## 如果有使用redis的pubsub方式更新词典。如果没有配置,默认使用的是$ES_HOME/config/ansj/dic/user/ext.dic
  • 查询分词

可以使用开头我提供的http接口来查看分词效果

然后通过redis发布一个新词看看 追加新词

redis-cli
publish ansj_term u:c:视康

是不是分词发生了变化 删除词条

redis-cli
publish ansj_term u:d:视康

又回来了

然后通过redis发布一个歧义词 追加歧义词

redis-cli
publish ansj_term a:c:减肥瘦身-减肥,nr,瘦身,v

是不是分词发生了变化 删除歧义词

redis-cli
publish ansj_term a:d:减肥瘦身

又回来了

结束

就写这么多吧,有啥问题,QQ找我

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%

AltStyle によって変換されたページ (->オリジナル) /