1. 程式人生 > >基於 Ansj 的 elasticsearch 2.3.1 中文分詞外掛

基於 Ansj 的 elasticsearch 2.3.1 中文分詞外掛

前言

這是一個elasticsearch的中文分詞外掛,基於Ansj中文分詞。發起者Onni大神。

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

更新內容

  • 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" : {
        "type1" : {
            "_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