当前位置: 首页 > 面试题库 >

令牌生成器与令牌过滤器

武睿
2023-03-14
问题内容

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

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

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

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

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


问题答案:

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

例如,假设输入为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端点还支持说明功能,该功能在分析过程的每个步骤中显示详细信息。



 类似资料:
  • 问题内容: 由于我是elasticsearch的新手,因此我无法识别 ngram令牌过滤器 和 edge ngram令牌过滤器 之间的 区别 。 两者在处理令牌方面有何不同? 问题答案: 我认为文档对此非常清楚: 该标记器与nGram非常相似,但仅保留从标记开头开始的n-gram。 标记器的最佳示例再次来自文档: 使用此标记生成器定义: 简而言之: 令牌生成器将根据令牌的配置来创建令牌。在这个例子

  • 主要内容:Apache Ant令牌过滤器示例令牌过滤器允许我们在复制时过滤文件中的数据。 要进行过滤,需要使用一个必须与过滤器任务中的设置匹配的标记。 任务使用作为标记分隔符。 为了实现此功能,Apache Ant提供了使用属性的。 此功能仅应与文本文件一起使用。下面来看看Apache Ant令牌过滤器属性: 属性 描述 必要 它是没有分隔符字符(@)的标记字符串。 Y 这是一个字符串,应该在复制文件时替换令牌。 Y 必须从中读取过滤器的文

  • 问题内容: 我正在使用Apache Oltu框架实现OAuth 2.0提供程序服务器,以寻找有关如何在Java中生成访问令牌和秘密令牌的想法。请指教。 问题答案: OAuth 2.0 规范并未说明如何生成令牌和秘密令牌。因此,由您决定是使用一些现有的/锚定数据来生成令牌,还是要使用随机序列来生成令牌。唯一的区别是,如果您使用大概已知的数据(例如,用户数据,例如用户名,创建日期等),则可以在需要时随

  • 我在生成XSRF令牌和更新必要的cookie值方面遇到了一些奇怪的行为。当我加载我的网站的登录页时——一个有角度的前端和一个Spring boot后端——会生成一个XSRF令牌。不是很理想,但如果这是正常的和预期的,那么我可以接受。进入登录页时生成的唯一请求是“获取”请求。 在我登录到应用程序之后,它验证第一个XSRF-TOKEN并验证其有效性,然后继续登录。但是,在更改web服务上的XSRF-t

  • https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res

  • 我在Elasticsearch 7.10中创建了一个索引,如下所示: 如您所见,我配置了一个名为my_analyzer的自定义分析器,该分析器应用了令牌过滤器。基于文档,我希望这个过滤器在索引时从文档的所有类型属性中删除英语stopwords。 事实上,如果我向http://localhost:30200/my_index/_analyze使用此请求主体: 我得到一个响应,表明令牌、、和已从提供的