文本分析概述
编辑文本分析概述
编辑文本分析使 Elasticsearch 能够执行全文搜索,其中搜索返回所有相关结果,而不仅仅是精确匹配的结果。
如果您搜索 Quick fox jumps
,您可能希望获得包含 A quick brown fox jumps over the lazy dog
的文档,您可能还希望获得包含相关词语(如 fast fox
或 foxes leap
)的文档。
分词
编辑分析通过分词来实现全文搜索:将文本分解成更小的块,称为词元。在大多数情况下,这些词元是单独的词。
如果您将短语 the quick brown fox jumps
作为单个字符串索引,并且用户搜索 quick fox
,则它不被视为匹配项。但是,如果您对短语进行分词并单独索引每个词,则可以单独查找查询字符串中的术语。这意味着可以通过搜索 quick fox
、fox brown
或其他变体来匹配它们。
标准化
编辑分词可以匹配单个术语,但每个词元仍然是字面匹配。这意味着
- 搜索
Quick
不会匹配quick
,即使您可能希望任何一个术语都与另一个术语匹配 - 尽管
fox
和foxes
共享相同的词根,但搜索foxes
不会匹配fox
,反之亦然。 - 搜索
jumps
不会匹配leaps
。虽然它们不共享相同的词根,但它们是同义词,并且具有相似的含义。
为了解决这些问题,文本分析可以将这些词元标准化为标准格式。这允许您匹配与搜索词不完全相同,但足够相似以仍然相关的词元。例如
-
Quick
可以转换为小写:quick
。 -
foxes
可以进行词干提取,或简化为词根:fox
。 -
jump
和leap
是同义词,可以作为单个词索引:jump
。
为了确保搜索词按预期匹配这些词,您可以将相同的分词和标准化规则应用于查询字符串。例如,搜索 Foxes leap
可以标准化为搜索 fox jump
。
自定义文本分析
编辑文本分析由分析器执行,分析器是一组控制整个过程的规则。
Elasticsearch 包括一个默认的分析器,称为标准分析器,它在大多数用例中都能很好地开箱即用。
如果您想定制搜索体验,您可以选择不同的内置分析器,甚至可以配置一个自定义分析器。自定义分析器使您可以控制分析过程的每个步骤,包括
- 在分词之前对文本进行的更改
- 文本如何转换为词元
- 在索引或搜索之前对词元进行的标准化更改