elasticsearch之分詞器
阿新 • • 發佈:2018-12-13
1.概念
在elasticsearch中索引分析模組是可以通過註冊分詞器來進行配置的。分詞器的作用就是當一個文件被索引的時候,分詞器從文件中提取若干詞元(token)來支援索引的儲存和搜尋。elasticsearch內建了很多分詞器,分解器,和詞元過濾器.
索引分析模組包括:
分詞器(analyzer)
分解器(tokenizer)
詞元過濾器(token filters)
2.分詞器(包含分解器和詞元過濾器)
由一個分解器(tokenizer),零個或多個詞元過濾器(token filters)組成
①、分解器作用:
首先預處理(比如去掉html標記),分解器會有多個字元過濾器。
然後分解器是用來把字串分解成一系列的詞元
②、詞元過濾器作用:
對分解器提取出來的詞元進一步處理,比如轉大小寫,增加同義詞等。處理後的結果為索引詞(term),文件中包含幾個這樣term成為詞頻。
引擎會建立term與原文件的倒排索引。
例子:
POST http://host:port:9200/_analyze
{
“analyzer”: “standard”,
“text”: [“this is my elasticsearch”]
}
也可以這樣寫:
POST http://host:port:9200/_analyze
{
“tokenizer”: “standard”,
“filter”: [“lowercase”],
“text”: [“this is my elasticsearch”]
}
3.自定義分詞器:
PUT http://host:9200/my_index { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { # 字元過濾器 "char_filter": { "&_to_and": { "type": "mapping", "mappings":["&=>and"] } }, # 詞元過濾器 "filter": { # 詞元過濾器名稱 "my_stopwords": { "type": "stop", "stopwords":["the", "a"] } }, # 分詞器 "analyzer": { # 分詞器名稱 "my_analyzer": { # 自定義型別分詞器 "type": "custom", "char_filter": ["html_strip", "&_to_and"], # 使用標準分解器 "tokenizer": "standard", # 使用小寫詞元過濾器和自定義的停止詞元過濾器 "filter": ["lowercase", "my_stopwords"] } } } } }
測試:
POST http://host:9200/my_index/_analyze/
{
"analyzer": "my_analyzer",
"text": ["The quick & brown fox"]
}
結果: