一尘不染

令牌生成器与令牌过滤器

elasticsearch

我正在尝试使用Elasticsearch来实现自动完成功能,因为我知道该怎么做…

我正在尝试在索引已爬网数据时使用ES的edge_n_grams建立多词(短语)建议。

a tokenizer和a 之间有什么区别token_filter-我已经阅读了有关这些文档,但仍需要更多了解…。

例如,token_filter是ES用来针对用户输入进行搜索的内容吗?ES用于制作令牌的令牌生成器是吗?什么是代币?

ES是否可以使用其中任何一种来创建多词建议?


阅读 470

收藏
2020-06-22

共1个答案

一尘不染

令牌生成器会将整个输入拆分为令牌,令牌过滤器将对每个令牌应用某种转换。

例如,假设输入为The quick brown fox。如果使用edgeNGram 令牌生成器 ,则将获得以下令牌:

  • 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 令牌过滤器 ,则会得到以下令牌

  • TThThe
  • qququiquicquick
  • bbrbrobrowbrown
  • ffofox

如您所见,在edgeNgram 标记生成器标记过滤器 之间进行选择取决于您要如何对文本进行切片和切块以及如何进行搜索。

我建议您看一下优秀的elyzer工具,该工具提供一种可视化分析过程并查看每个步骤(令牌化和令牌过滤)过程中生成的内容的方法。

从ES
2.2开始,_analyze端点还支持说明功能,该功能在分析过程的每个步骤中显示详细信息。

2020-06-22