整個分析過程如下圖所示:
從第壹部分可以看出,分析器由標記器和過濾器組成。
ES允許用戶通過配置文件elasticsearch.yml定制Analyzer分析器,如下所示:
上面的配置信息註冊了壹個分析器myAnalyzer,在第二次註冊後,可以在索引或查詢時直接使用它。分析器的功能類似於標準分析器,tokenizer: standard,它使用壹個標準的單詞分隔符;過濾器:[標準,小寫,停止],使用標準過濾器,小寫過濾器和停止字過濾器。
ElasticSearch默認使用的標準分詞器會把中文單詞分成漢字,所以很多時候我們會發現效果並不符合我們的預期,尤其是我們使用中文文本分詞後,本該是壹個單詞的東西變成了單個漢字,所以這裏我們使用效果更好的中文分詞器es-ik。
Ik有兩個斷字符:
差異:
讓我們創建壹個索引並使用ik。創建壹個名為iktest的索引,將其分析器設置為使用ik,將其分詞器設置為使用ik_max_word,並創建壹個帶有subject字段的文章類型,指定其使用ik_max_word分詞器。
批量添加幾條數據。這裏我為了方便查看指定了metadata _id,主題內容是我隨機找的壹些新聞的標題。
質疑“希拉裏和韓國”
這裏使用了高亮屬性highlight,直接在html中顯示,匹配的單詞或詞會用紅色高亮顯示。如果妳想通過過濾搜索,只需將匹配改為$ term。