1. 程式人生 > 其它 >ES之一:API使用及常用概念

ES之一:API使用及常用概念

ES使用中文分詞器進行分詞

windows版本安裝中文分詞器: IK 分詞器

#1.下載與ES版本一模一樣版本的IK分詞器, 否則可能導致失敗 (這裡選擇v7.14.0)
https://github.com/medcl/elasticsearch-analysis-ik/releases

#2.將elasticsearch-analysis-ik-7.14.0.zip拷貝到 elasticsearch-7.14.0\plugins目錄下,
在該目錄下建立ik目錄, 將elasticsearch-analysis-ik-7.14.0.zip解壓到ik目錄, 然後移除elasticsearch-analysis-ik-7.14.0.zip, 切記一定要移除這個zip包

#3.直接啟動或重新啟動ES即可.

IK分詞器基礎知識

IK中文分詞器外掛給我們提供了兩個分析器。
ik_max_word: 會將文字做最細粒度的拆分
ik_smart:會做最粗粒度的拆分

#直接測試下IK分詞器
POST _analyze
{
  "analyzer": "ik_smart",
  "text":     "中華人民共和國國歌"
}

POST _analyze
{
  "analyzer": "ik_max_word",
  "text":     "中華人民共和國國歌"
}

建立索引時指定IK分詞器

PUT /ik_index
{
  "mappings": {
    "properties": {
      "id": {
        "type": "long"
      },
      "title": {
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

檢視索引情況(是否成功使用了IK分詞器)

GET /ik_index/_mapping

為索引指定預設的分詞器

PUT ik_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "ik_max_word"
        }
      }
    }
  }
}

測試下中文分詞效果

PUT /ik_index/_doc/1
{
  "id": 99,
  "title": "這是一篇中文文章。"
}

#應該查到結果
GET /ik_index/_search
{
  "query": {
    "match": {
      "title": "文章"
    }
  }
}

#不應該查到結果
GET /ik_index/_search
{
  "query": {
    "match": {
      "title": "文"
    }
  }
}

自定義IK分詞器的字典

自定義前檢視分詞效果

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "你好追夢人"
}

自定義分詞字典

1.在D:\elasticsearch-7.14.0\plugins\ik\config目錄下, 建立zy.dic檔案(注意字符集為UTF-8)
2.在zy.dic中首行直接輸入三個字: 追夢人
3.編輯D:\elasticsearch-7.14.0\plugins\ik\config\IKAnalyzer.cfg.xml, 將zy.dic填入下處:
<entry key="ext_dict">zy.dic</entry>
4.啟動或者重啟ES.

再次檢視分詞效果即可

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "你好追夢人"
}