Token 图

编辑

分词器 将文本转换为 token 流时,它还会记录以下内容:

  • 流中每个 token 的 position(位置)
  • positionLength(位置长度),即 token 跨越的位置数

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

token graph qbf ex

同义词

编辑

一些 token 过滤器 可以向现有 token 流添加新的 token,例如同义词。这些同义词通常跨越与现有 token 相同的位置。

在下面的图中,quick 和它的同义词 fast 都具有位置 0。它们跨越相同的位置。

token graph qbf synonym ex

多位置 Token

编辑

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

但是,只有一些称为 *图 token 过滤器* 的 token 过滤器才能准确地记录多位置 token 的 positionLength。这些过滤器包括:

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

在下面的图中,domain name system 和它的同义词 dns 都具有位置 0。但是,dnspositionLength3。图中的其他 token 的默认 positionLength1

token graph dns synonym ex

使用 Token 图进行搜索

编辑

索引 忽略 positionLength 属性,并且不支持包含多位置 token 的 token 图。

但是,诸如 matchmatch_phrase 查询之类的查询可以使用这些图从单个查询字符串生成多个子查询。

示例

用户使用 match_phrase 查询搜索以下短语:

domain name system is fragile

搜索分析 期间,dnsdomain name system 的同义词,被添加到查询字符串的 token 流中。dns token 的 positionLength3

token graph dns synonym ex

match_phrase 查询使用此图为以下短语生成子查询:

dns is fragile
domain name system is fragile

这意味着该查询将匹配包含 dns is fragile *或* domain name system is fragile 的文档。

无效的 Token 图

编辑

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

这意味着这些过滤器将为包含此类 token 的流生成无效的 token 图。

在下面的图中,dnsdomain name system 的多位置同义词。但是,dns 具有默认的 positionLength1,从而导致无效的图。

token graph dns invalid ex

避免使用无效的 token 图进行搜索。无效的图可能导致意外的搜索结果。