es內置分詞器
-
standard:默認分詞,單詞會被拆分,大小會轉換爲小寫。
-
simple:按照非字母分詞。大寫轉爲小寫。
-
whitespace:按照空格分詞。忽略大小寫。
-
stop:去除無意義單詞,比如the/a/an/is…
-
keyword:不做分詞。把整個文本作爲一個單獨的關鍵詞。
restful風格使用
POST /_analyze
{
"analyzer": "standard", // 分詞器
"text": "text文本" // 需要分詞的文本
}
中文分詞
內置分詞器只支持英文,中文分詞需要用第三方插件,這裏推薦elasticsearch-analysis-ik,支持ik_max_word
和 ik_smart
兩種分詞方式。
-
ik_max_word: 會將文本做最細粒度的拆分,比如會將“中華人民共和國國歌”拆分爲“中華人民共和國,中華人民,中華,華人,人民共和國,人民,人,民,共和國,共和,和,國國,國歌”,會窮盡各種可能的組合,適合 Term Query;
-
ik_smart: 會做最粗粒度的拆分,比如會將“中華人民共和國國歌”拆分爲“中華人民共和國,國歌”,適合 Phrase 查詢。
擴展詞庫與停用詞庫
配置 {conf}/analysis-ik/config/IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 擴展配置</comment>
<!--用戶可以在這裏配置自己的擴展字典 -->
<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
<!--用戶可以在這裏配置自己的擴展停止詞字典-->
<entry key="ext_stopwords">custom/ext_stopword.dic</entry>
<!--用戶可以在這裏配置遠程擴展字典 -->
<entry key="remote_ext_dict">location</entry>
<!--用戶可以在這裏配置遠程擴展停止詞字典-->
<entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>
</properties>