这是一个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 |
2.4.2 | 2.4.2 |
2.4.3 | 2.4.3 |
2.4.4 | 2.4.4 |
2.4.5 | 2.4.5 |
5.0.0 | 5.0.0 |
5.0.1 | 5.0.1 |
5.0.2 | 5.0.2 |
5.1.1 | 5.1.1 |
5.1.2 | 5.1.2 |
5.2.0 | 5.2.0 |
5.2.1 | 5.2.1 |
5.2.2 | 5.2.2 |
5.3.0 | 5.3.0 |
5.3.1 | 5.3.1 |
master | 5.3.2 |
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.3.2/elasticsearch-analysis-ansj-5.3.2.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.3.1/elasticsearch-analysis-ansj-5.3.1.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.3.0/elasticsearch-analysis-ansj-5.3.0.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./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
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.2.1/elasticsearch-analysis-ansj-5.2.1.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.2.0/elasticsearch-analysis-ansj-5.2.0.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.1.2/elasticsearch-analysis-ansj-5.1.2.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.1.1/elasticsearch-analysis-ansj-5.1.1.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.0.2/elasticsearch-analysis-ansj-5.0.2.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.0.1/elasticsearch-analysis-ansj-5.0.1.1-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v5.0.0/elasticsearch-analysis-ansj-5.0.0.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v2.4.5/elasticsearch-analysis-ansj-2.4.5.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v2.4.4/elasticsearch-analysis-ansj-2.4.4.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v2.4.3/elasticsearch-analysis-ansj-2.4.3.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v2.4.2/elasticsearch-analysis-ansj-2.4.2.0-release.zip
进入Elasticsearch目录运行如下命令
进入es目录执行如下命令
./bin/plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v2.4.1/elasticsearch-analysis-ansj-2.4.1.0-release.zip
进入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
进入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
进入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
进入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
进入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
进入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
进入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
进入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
==========
- ansj_seg升级至5.1.1
- 支持配置同义词词典
- 支持自定义分词器
- 支持从http,文件,数据库,jar,class加载词典
- 热词更新,用http接口取代redis
- elasticsearch更新至5.0.0
- ansj_seg升级至5.0.4
- 新增配置文件config/ansj.cfg.yml
- elasticsearch更新2.3.1
- ansj_seg升级至3.7.3
- 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
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
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
- 配置文件config/ansj.cfg.yml,需要放入$ES_HOME/config/analysis-ansj/ansj.cfg.yml或者$ES_HOME/plugins/elasticsearch-analysis-ansj-*/config/ansj.cfg.yml
# 全局变量配置方式一
ansj:
#默认参数配置
isNameRecognition: true #开启姓名识别
isNumRecognition: true #开启数字识别
isQuantifierRecognition: true #是否数字和量词合并
isRealName: false; #是否保留真实词语,建议保留false
#用户自定词典配置
dic: 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: ...
#歧义词典配置
#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 :
# 类型支持base_ansj, index_ansj, query_ansj, dic_ansj, nlp_ansj
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
- http接口
- /_cat/ansj: 执行分词
- /_cat/ansj/config: 显示全部配置
- /_ansj/flush/config: 刷新全部配置
- /_ansj/flush/dic: 更新全部词典。包括用户自定义词典,停用词典,同义词典,歧义词典,crf
在这里我说一下,在插件里我写了一些默认配置,如果你也可以接受我的默认配置,关于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/elasticsearch-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找我