词元图
编辑词元图编辑
当一个 分词器 将文本转换为词元流时,它还会记录以下内容
- 每个词元在流中的
position
positionLength
,即词元跨越的词元位置数量
使用这些信息,您可以为一个流创建 有向无环图,称为词元图。在词元图中,每个词元位置代表一个节点。每个词元代表一条边或弧,指向下一个词元位置。
同义词编辑
一些 词元过滤器 可以向现有的词元流中添加新的词元,例如同义词。这些同义词通常与现有词元跨越相同的词元位置。
在下面的图中,quick
及其同义词 fast
都有一个词元位置 0
。它们跨越相同的词元位置。
跨越多个词元位置的词元编辑
一些词元过滤器可以添加跨越多个词元位置的词元。这些词元可能包括多词同义词的词元,例如使用 "atm" 作为 "automatic teller machine" 的同义词。
但是,只有被称为图词元过滤器的某些词元过滤器才能准确地记录跨越多个词元位置的词元的 positionLength
。这些过滤器包括
一些分词器,例如 nori_tokenizer
,也能准确地将复合词元分解为跨越多个词元位置的词元。
在下面的图中,domain name system
及其同义词 dns
都有一个词元位置 0
。但是,dns
的 positionLength
为 3
。图中的其他词元具有默认的 positionLength
值 1
。
使用词元图进行搜索编辑
索引 会忽略 positionLength
属性,并且不支持包含跨越多个词元位置的词元的词元图。
但是,查询(例如 match
或 match_phrase
查询)可以使用这些图从单个查询字符串生成多个子查询。
示例
用户使用 match_phrase
查询运行以下短语的搜索
domain name system is fragile
在 搜索分析 期间,dns
(domain name system
的同义词)被添加到查询字符串的词元流中。dns
词元的 positionLength
为 3
。
match_phrase
查询使用此图生成以下短语的子查询
dns is fragile domain name system is fragile
这意味着查询匹配包含 dns is fragile
或 domain name system is fragile
的文档。
无效词元图编辑
以下词元过滤器可以添加跨越多个词元位置的词元,但只记录默认的 positionLength
值 1
这意味着这些过滤器将为包含此类词元的流生成无效的词元图。
在下面的图中,dns
是 domain name system
的跨越多个词元位置的同义词。但是,dns
具有默认的 positionLength
值 1
,导致图无效。
避免使用无效的词元图进行搜索。无效的图会导致意外的搜索结果。