这两天又在折腾ES,之前在centOS上有装过elasticsearch2.4.3和5.3.1。然后需要对中文进行分词,老大建议用ANSJ,所以放弃了使用IK分词器。
但是在装ANSJ的时候出现了问题,貌似并木有合适的版本源。在成功把虚拟机玩挂了之后还是老老实实用了2.3.1版本,至于ES环境的相关配置可以参考之前的博文。
不说废话了,开工。
ES如果要拿来做ANSJ中文分词的话,建议使用如下图所示版本,可以少走不少弯路。至于其它版本、不推荐,如果时间充裕的话可以玩一玩。
在elasticsearch安装目录的bin目录下执行:
./plugin install http://maven.nlpcn.org/org/ansj/elasticsearch-analysis-ansj/2.3.1/elasticsearch-analysis-ansj-2.3.1-release.zip
等待分词器安装...
创建测试索引
curl -XPUT 127.0.0.1:9200/test -d '{ "settings" : { "number_of_shards" : 1, "number_of_replicas" : 0 }, "mappings" : { "type1" : { "_all" : { "enabled" : false }, "properties" : { "name" : { "type" : "string", "analyzer" : "index_ansj", "search_analyzer" : "query_ansj" } } } } }'
注意: -XPUT后的IP 127.0.0.1这里如果在elasticsearch.yml中更改为了虚拟机的IP则需要在输入时改变IP。
添加索引内容
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
IP是否更改同样看之前是如何配置的
将ANSJ设置为默认分词方法
在elasticsearch.yml加入如下配置:
#默认分词器,索引
index.analysis.analyzer.default.type: index_ansj
#默认分词器,查询
index.analysis.analyzer.default_search.type: query_ansj
索引分词
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
浏览器测试的相关结果:
相关参考:https://www.oschina.net/news/72833/ansj-elasticsearch-2-3-1