當前位置:成語大全網 - 書法字典 - ES中的斷字符

ES中的斷字符

全文搜索引擎會用某種算法分析要索引的文檔,並從文檔中提取壹些標記。這些算法叫做Tokenizer,這些記號會被進壹步處理,比如小寫。這些處理算法稱為令牌過濾,處理後的結果稱為$ Term。文件包含幾個這樣的$ Term,它被稱為頻率。該引擎將在$ Term和原始文檔之間建立壹個倒排索引,這樣就可以根據$ Term快速找到源文檔。在Tokenizer處理文本之前,可能會進行壹些預處理,比如刪除其中的HTML標記。這些處理算法稱為字符過濾器,整個分析算法稱為分析器。

整個分析過程如下圖所示:

從第壹部分可以看出,分析器由標記器和過濾器組成。

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。