我正在尝试使用Elasticsearch实现自动完成,因为我知道如何做到这一点......
我正在尝试使用ES的edge_n_grams Build 多字(短语)建议,同时索引已爬网数据 .
tokenizer 和 token_filter 之间的区别是什么 - 我已经阅读了关于这些的文档,但仍然需要对它们有更多的了解....
tokenizer
token_filter
例如,ES是用来搜索用户输入的token_filter吗?是一个令牌化器,ES用来制作令牌吗?什么是令牌?
ES可以使用这些东西创建多字建议吗?
标记生成器会将整个输入拆分为标记,标记过滤器将对每个标记应用一些转换 .
例如,假设输入是 The quick brown fox . 如果您使用edgeNGram tokenizer ,您将获得以下标记:
The quick brown fox
T
Th
The
The (最后一个字符是空格)
The q
The qu
The qui
The quic
The quick
The quick (最后一个字符是空格)
The quick b
The quick br
The quick bro
The quick brow
The quick brown
The quick brown (最后一个字符是空格)
The quick brown f
The quick brown fo
但是,如果您使用标准标记生成器将输入拆分为单词/标记,然后使用edgeNGram token filter ,您将获得以下标记
T , Th , The
q , qu , qui , quic , quick
q
qu
qui
quic
quick
b , br , bro , brow , brown
b
br
bro
brow
brown
f , fo , fox
f
fo
fox
如您所见,在edgeNgram tokenizer 或 token filter 之间进行选择取决于您希望如何对文本进行切片和切块以及如何搜索它 .
我建议看一下优秀的elyzer工具,该工具提供了一种可视化分析过程并查看每个步骤中产生的内容(标记化和令牌过滤)的方法 .
从ES 2.2开始, _analyze endpoints 还支持explain feature,它在分析过程的每个步骤中显示详细信息 .
_analyze
1 回答
标记生成器会将整个输入拆分为标记,标记过滤器将对每个标记应用一些转换 .
例如,假设输入是
The quick brown fox
. 如果您使用edgeNGram tokenizer ,您将获得以下标记:T
Th
The
The
(最后一个字符是空格)The q
The qu
The qui
The quic
The quick
The quick
(最后一个字符是空格)The quick b
The quick br
The quick bro
The quick brow
The quick brown
The quick brown
(最后一个字符是空格)The quick brown f
The quick brown fo
The quick brown fox
但是,如果您使用标准标记生成器将输入拆分为单词/标记,然后使用edgeNGram token filter ,您将获得以下标记
T
,Th
,The
q
,qu
,qui
,quic
,quick
b
,br
,bro
,brow
,brown
f
,fo
,fox
如您所见,在edgeNgram tokenizer 或 token filter 之间进行选择取决于您希望如何对文本进行切片和切块以及如何搜索它 .
我建议看一下优秀的elyzer工具,该工具提供了一种可视化分析过程并查看每个步骤中产生的内容(标记化和令牌过滤)的方法 .
从ES 2.2开始,
_analyze
endpoints 还支持explain feature,它在分析过程的每个步骤中显示详细信息 .