分析數(shù)據(jù)
- 使用分析器分析文檔
- 使用分析API
- 分詞
- 字符過(guò)濾器
- 分詞過(guò)濾器
- 提取詞干
- es所包含的分析器
1尺迂、什么是分析
在文檔被發(fā)送并加入倒排索引之前笤妙,Es在主體上進(jìn)行的操作;
a噪裕、字符過(guò)濾器: 使用字符過(guò)濾轉(zhuǎn)變字符
b蹲盘、 分詞器:文本切分為分詞,將文本切分為單個(gè)或多分分詞
c膳音、分詞過(guò)濾器: 使用分詞過(guò)濾器轉(zhuǎn)變分詞
d召衔、分詞索引: 將這些分詞存儲(chǔ)到索引中
e、分析流程圖:
原始文本數(shù)據(jù)——>字符過(guò)濾器——>分詞器——>分詞過(guò)濾器——>文檔索引(倒排索引)
-
analyzer 分析器類型:
standard analyzer standard standard tokenizer, standard filter, lower case filter, stop filter simple analyzer simple lower case tokenizer【小寫轉(zhuǎn)換分詞過(guò)濾器】 stop analyzer stop lower case tokenizer, stop filter【停用詞分詞過(guò)濾器】 keyword analyzer keyword 不分詞祭陷,內(nèi)容整體作為一個(gè)token(not_analyzed) pattern analyzer whitespace 正則表達(dá)式分詞苍凛,默認(rèn)匹配\W+ language analyzers lang 各種語(yǔ)言 snowball analyzer snowball standard tokenizer, standard filter, lower case filter, stop filter, snowball filter custom analyzer custom 一個(gè)Tokenizer, 零個(gè)或多個(gè)Token Filter, 零個(gè)或多個(gè)Char Filter
-
tokenizer 分詞器類型
standard tokenizer standard edge ngram tokenizer edgeNGram keyword tokenizer keyword 不分詞 letter analyzer letter 按單詞分 lowercase analyzer lowercase letter tokenizer, lower case filter ngram analyzers nGram whitespace analyzer whitespace 以空格為分隔符拆分 pattern analyzer pattern 定義分隔符的正則表達(dá)式 uax email url analyzer uax_url_email 不拆分url和email path hierarchy analyzer path_hierarchy 處理類似/path/to/somthing樣式的字符串
-
token filter 分詞過(guò)濾器類型
standard filter standard ascii folding filter asciifolding length filter length 去掉太長(zhǎng)或者太短的 lowercase filter lowercase 轉(zhuǎn)成小寫 ngram filter nGram edge ngram filter edgeNGram porter stem filter porterStem 波特詞干算法 shingle filter shingle 定義分隔符的正則表達(dá)式 stop filter stop 移除 stop words word delimiter filter word_delimiter 將一個(gè)單詞再拆成子分詞 stemmer token filter stemmer stemmer override filter stemmer_override keyword marker filter keyword_marker keyword repeat filter keyword_repeat kstem filter kstem snowball filter snowball phonetic filter phonetic 插件 synonym filter synonyms 處理同義詞 compound word filter dictionary_decompounder, hyphenation_decompounder 分解復(fù)合詞 reverse filter reverse 反轉(zhuǎn)字符串 elision filter elision 去掉縮略語(yǔ) truncate filter truncate 截?cái)嘧址? unique filter unique pattern capture filter pattern_capture pattern replace filte pattern_replace 用正則表達(dá)式替換 trim filter trim 去掉空格 limit token count filter limit 限制token數(shù)量 hunspell filter hunspell 拼寫檢查 common grams filter common_grams normalization filter arabic_normalization, persian_normalization
-
char_filter 字符過(guò)濾器類型
mapping char filter mapping 根據(jù)配置的映射關(guān)系替換字符 html strip char filter html_strip 去掉HTML元素 pattern replace char filter pattern_replace 用正則表達(dá)式處理字符串
2趣席、自定義分析器
包含零個(gè)或多個(gè)字符過(guò)濾器、1個(gè)分詞器醇蝴、零個(gè)或多個(gè)分詞過(guò)濾器
注意:
match和match_phrase這樣的查詢?cè)趫?zhí)行之前會(huì)執(zhí)行分析步驟宣肚,而term和terms不會(huì)
3、為文檔使用分詞器
3.1悠栓、在創(chuàng)建索引的時(shí)候添加分詞器
public static function index()
{
return [
'index' => 'order',
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 1,
"index" => [
'analysis' => [
'analyzer' => [
'myAnalyzer' => [
//定制化的類型
'type' => 'custom',
//使用myTokenizer對(duì)文本進(jìn)行分詞
'tokenizer' => 'myTokenizer',
//指定文本需要經(jīng)過(guò)的兩個(gè)過(guò)濾器
'filter' => [
'myFilter1', 'myFilter2',
],
//設(shè)置制定的字符過(guò)濾器霉涨,會(huì)在其他分析步驟之前運(yùn)行
'char_filter' => [
'myCharFilter',
],
],
],
//分詞器
'tokenizer' => [
'myTokenizer' => [
'type' => 'letter'
],
],
//分詞過(guò)濾器
'filter' => [
'myFilter1' => [
'type' => 'lowercase',
],
'myFilter2' => [
'type' => 'kstem',
],
],
//字符過(guò)濾器
'char_filter' => [
'myCharFilter' => [
'type' => 'mapping',
'mappings' => [
"ph=>f", "u=>you",
],
],
],
],
],
],
'mappings' => [...],
]
];
}
3.2、在映射中指定某個(gè)字段的分析器
3.3惭适、在Elasticsearch的配置文件中設(shè)置全局的分析器
4笙瑟、使用分析API來(lái)分析文本
- _analyze
API允許向Es發(fā)送任何文本,制定所使用的分析器癞志,分詞器或者分詞過(guò)濾器往枷,然后獲取分析之后的分詞
a、選擇一個(gè)分析器
b凄杯、通過(guò)組合即興的創(chuàng)建分析其器
c错洁、基于某個(gè)字段映射的分析
5、使用詞條向量來(lái)學(xué)習(xí)索引詞條
- _termvector