词元图编辑

当一个 分词器 将文本转换为词元流时,它还会记录以下内容

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

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

token graph qbf ex

同义词编辑

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

在下面的图中,quick 及其同义词 fast 都有一个词元位置 0。它们跨越相同的词元位置。

token graph qbf synonym ex

跨越多个词元位置的词元编辑

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

但是,只有被称为图词元过滤器的某些词元过滤器才能准确地记录跨越多个词元位置的词元的 positionLength。这些过滤器包括

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

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

token graph dns synonym ex

使用词元图进行搜索编辑

索引 会忽略 positionLength 属性,并且不支持包含跨越多个词元位置的词元的词元图。

但是,查询(例如 matchmatch_phrase 查询)可以使用这些图从单个查询字符串生成多个子查询。

示例

用户使用 match_phrase 查询运行以下短语的搜索

domain name system is fragile

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

token graph dns synonym ex

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

dns is fragile
domain name system is fragile

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

无效词元图编辑

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

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

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

token graph dns invalid ex

避免使用无效的词元图进行搜索。无效的图会导致意外的搜索结果。