加载中

词元图 (Token graphs)

分词器(tokenizer) 将文本转换为词元流时,它还会记录以下信息

  • 流中每个词元的 position(位置)
  • positionLength,即词元跨越的位置数量

使用这些信息,可以为流创建一个 有向无环图,称为词元图(token graph)。在词元图中,每个位置代表一个节点。每个词元代表一条边或弧,指向下一个位置。

token graph qbf ex

一些 词元过滤器(token filters) 可以将新的词元(如同义词)添加到现有的词元流中。这些同义词通常与现有词元跨越相同的位置。

在下图中,quick 及其同义词 fast 的位置均为 0。它们跨越了相同的位置。

token graph qbf synonym ex

一些词元过滤器可以添加跨越多个位置的词元。这包括多词同义词的词元,例如使用 "atm" 作为 "automatic teller machine" 的同义词。

然而,只有某些称为图词元过滤器(graph token filters)的词元过滤器,才能准确记录多位置词元的 positionLength。这些过滤器包括

一些分词器,例如 nori_tokenizer,也能准确地将复合词元分解为多位置词元。

在下图中,domain name system 及其同义词 dns 的位置均为 0。但是,dnspositionLength3。图中的其他词元具有默认的 positionLength1

token graph dns synonym ex

索引(Indexing)过程会忽略 positionLength 属性,且不支持包含多位置词元的词元图。

然而,诸如 matchmatch_phrase 查询等查询,可以使用这些图从单个查询字符串生成多个子查询。

以下词元过滤器可以添加跨越多个位置的词元,但仅记录默认的 positionLength1

这意味着对于包含此类词元的流,这些过滤器会产生无效的词元图。

在下图中,dnsdomain name system 的多位置同义词。但是,dnspositionLength 值为默认的 1,导致生成的图无效。

token graph dns invalid ex

避免在搜索中使用无效的词元图。无效的图可能会导致意外的搜索结果。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.