文本分析概述

edit

文本分析使Elasticsearch能够执行全文搜索,其中搜索返回所有相关结果,而不仅仅是精确匹配。

如果你搜索 Quick fox jumps,你可能想要包含 A quick brown fox jumps over the lazy dog 的文档,并且你可能还想要包含相关词汇的文档,比如 fast foxfoxes leap

分词

edit

分析通过分词实现全文搜索:将文本分解成更小的部分,称为词元。在大多数情况下,这些词元是单个单词。

如果你将短语 the quick brown fox jumps 作为一个字符串进行索引,而用户搜索 quick fox,它不会被视为匹配项。然而,如果你将短语分词并分别索引每个单词,查询字符串中的术语可以单独查找。这意味着它们可以通过搜索 quick foxfox brown 或其他变体来匹配。

归一化

edit

分词功能允许对单个词项进行匹配,但每个词项仍然按字面意义进行匹配。这意味着:

  • 搜索 Quick 不会匹配 quick,尽管你可能希望任一术语都能匹配另一个。
  • 尽管 foxfoxes 共享相同的词根,但搜索 foxes 不会匹配 fox,反之亦然。
  • 搜索 jumps 不会匹配 leaps。虽然它们不共享词根,但它们是同义词,具有相似的含义。

为了解决这些问题,文本分析可以将这些标记规范化为标准格式。这使您能够匹配与搜索词不完全相同但足够相似仍具有相关性的标记。例如:

  • Quick 可以小写:quick
  • foxes 可以词干提取,或简化为词根:fox
  • jumpleap 是同义词,可以索引为一个词:jump

为了确保搜索词与这些词匹配,您可以将相同的分词和规范化规则应用于查询字符串。例如,搜索Foxes leap可以规范化为搜索fox jump

自定义文本分析

edit

文本分析由一个分析器执行,这是一组规则,用于管理整个过程。

Elasticsearch 包含一个默认的分析器,称为 标准分析器,它开箱即用,适用于大多数使用场景。

如果您想定制您的搜索体验,您可以选择不同的 内置分析器 或者甚至 配置一个自定义分析器。自定义分析器让您可以控制分析过程的每一步,包括:

  • 文本在分词之前的更改
  • 文本如何转换为标记
  • 在索引或搜索之前对标记进行的规范化更改