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