由于我是elasticsearch的新手,因此我无法识别 ngram令牌过滤器 和 edge ngram令牌过滤器 之间的 区别 。
两者在处理令牌方面有何不同?
我认为文档对此非常清楚:
该标记器与nGram非常相似,但仅保留从标记开头开始的n-gram。
nGram标记器的最佳示例再次来自文档:
nGram
curl 'localhost:9200/test/_analyze?pretty=1&analyzer=my_ngram_analyzer' -d 'FC Schalke 04' # FC, Sc, Sch, ch, cha, ha, hal, al, alk, lk, lke, ke, 04
使用此标记生成器定义:
"type" : "nGram", "min_gram" : "2", "max_gram" : "3", "token_chars": [ "letter", "digit" ]
简而言之:
FC
Schalke
04
min_gram
max_gram
edgeNGram
对于相同的文字的上方,一个edgeNGram产生这样的:FC, Sc, Sch, Scha, Schal, 04。考虑文本中的每个“单词”,对于每个“单词”,第一个字符都是起点(Ffrom FC,Sfrom Schalke和0from 04)。
FC, Sc, Sch, Scha, Schal, 04
F
S
0