令牌生成器是否可在Elasticsearch中用于索引或查询,或两者都起作用?

问题描述 投票:0回答:2

我正在Elasticsearch 6.8中查看tokenizer。我知道它定义了我们在建立索引时如何将文本标记为单词。例如,它将把“ Quick brown fox!”文本转换为术语[Quick, brown, fox!]。如果我在Elasticsearch中有一个文本为"Quick brown fox!"的字段,它将在索引中分为三个词。但是,如果我发送查询文本"Quick brown fox!"tokenizer也适用于该查询参数怎么办?

elasticsearch tokenize elasticsearch-analyzers
2个回答
0
投票

只要在索引的字段映射中正确配置了分析程序,分析程序就可以在建立索引时间和查询时间工作。

On this page,您将获得有关分析仪启动时间的完整描述,为清楚起见,以下重复说明:

在索引时间,Elasticsearch将按以下顺序查找分析器:

  • 分析器在字段映射中定义。
  • 在索引设置中名为默认值的分析器。
  • 标准分析仪。

在查询时,还有更多层:

  • 在全文查询中定义的分析器。
  • 在字段映射中定义的search_analyzer。
  • 在字段映射中定义的分析器。
  • 在索引设置中名为default_search的分析器。
  • 在索引设置中名为默认值的分析器。
  • 标准分析仪。

因此,您可以在提取数据和查询数据时利用分析器。


0
投票

您还可以验证您的搜索词是否是标记词,也可以检查从搜索查询中生成的标记。由于它取决于各种因素,例如查询类型,已分析查询还是未分析查询。

Match queries是分析查询的示例,其中在匹配之前分析提供的文本。 term query是未经分析的查询的示例,其中提供的搜索文本未按原样进行分析和发送以进行搜索。

用于检查由搜索查询生成的令牌,请使用Explain API,该C <在此查询的输出中,您将能够检查为您的搜索词生成的令牌。

下面是来自explain API的输出的示例片段,该片段显示了Elasticsearch基于各种因素生成的搜索词标记。

"description": "weight(to:Foo in 0) [PerFieldSimilarity], result of:",

此API是检查ES生成的最终令牌的最快方法,该令牌用于令牌与令牌的匹配。

© www.soinside.com 2019 - 2024. All rights reserved.