把輸入的文本塊按照一定的策略進行分解,並建立倒排索引。在Lucene的架構中,這個過程由分析器(analyzer)完成。
主要組成
-
character filter
:接收原字符流,通過添加、刪除或者替換操作改變原字符流。例如:去除文本中的html標簽,或者將羅馬數字轉換成阿拉伯數字等。一個字符過濾器可以有零個或者多個
。 -
tokenizer
:簡單的說就是將一整段文本拆分成一個個的詞。例如拆分英文,通過空格能將句子拆分成一個個的詞,但是對於中文來說,無法使用這種方式來實現。在一個分詞器中,有且只有一個
tokenizeer -
token filters
:將切分的單詞添加、刪除或者改變。例如將所有英文單詞小寫,或者將英文中的停詞a
刪除等。在token filters
中,不允許將token(分出的詞)
的position
或者offset
改變。同時,在一個分詞器中,可以有零個或者多個token filters
默認ES使用standard analyzer
,如果默認的分詞器無法符合你的要求,可以自己配置。
下載拼音分詞插件,要和安裝的es版本保持一致,解壓改名乘pinyin放入到 es的plugins下,重啟es;
在創建index mapping時可以指定 "analyzer": "pinyin_analyzer"