文本分析-简介
简介
文本分析是es能够执行全文检索,其中搜索返回相关结果,而不仅仅是精确匹配的结果。
如果搜索Quick fox jumps
,您可能希望文档包含A Quick brown fox jumps over the lazy dog
,还可能希望文档包含相关的单词,如fast fox
或fox leap
。
Tokenization 标记化
文本分析使得通过标记进行全文搜索成为可能:将文本分解成更小的块,称为标记。在大多数情况下,这些标记是单独的单词。
如果您索引短语quick brown fox jumps
作为单个字符串,而用户搜索quick fox
,则不认为它是匹配的。但是,如果对短语进行标记并分别对每个单词进行索引,则可以分别查找查询字符串中的术语。这意味着它们可以通过搜索quick fox、fox brown
或其他变体进行匹配。
Normalization 标准化
标记化化支持对单个术语进行匹配,但每个标记仍然按字面进行匹配。这意味着:
- 搜索
Quick
不会匹配quick
,即使您可能希望其中一个术语与另一个相匹配 - 虽然
fox
和foxes
有相同的词根,但是对foxes
的搜索并不匹配fox
,反之亦然。 - 对
jumps
的搜索不能匹配leaps
。虽然它们没有相同的词根,但它们是同义词,有相似的意思.
为了解决这些问题,文本分析可以将这些标记规范化为标准格式。这允许您匹配与搜索条件不完全相同但足够相似的令牌,以保持相关性。例如:
- Quick can be lowercased: quick.
- foxes can be stemmed, or reduced to its root word: fox.
- jump and leap are synonyms and can be indexed as a single word: jump.
为了确保搜索条件匹配这些词,您可以对查询字符串应用相同的标记化和规范化规则。例如,对fox leap
的搜索可以规范化为对fox jump
的搜索。
自定义文本分析
文本分析由分析器执行,分析器是一组管理整个过程的规则。
Elasticsearch包含一个默认分词器,称为standard analyzer
,它可以很好地用于大多数开箱即用的用例。
如果你想调整你的搜索体验,您可以选择一个不同的内置分析器,甚至可以配置一个自定义分析器。自定义分析器使您可以控制分析过程的每个步骤,包括:
- Changes to the text before tokenization
- 如何将文本转换为标记
- 在建立索引或搜索之前对标记所做的规范化更改
本作品采用《CC 协议》,转载必须注明作者和本文链接