Skip to content

Latest commit

 

History

History
16 lines (9 loc) · 1.32 KB

token_proximity.md

File metadata and controls

16 lines (9 loc) · 1.32 KB

关键词紧邻距离(Token Proximity)

关键词紧邻距离用来衡量多个关键词在同一文档中是否相邻。比如用户搜索“中国足球”这一短语,包含“中国”和“足球”两个关键词,当这两个关键词按照同样顺序前后紧挨着出现在一个文档中时,紧邻距离为零,如果两词中间夹入很多词则紧邻距离较大。紧邻距离是一种衡量文档和多个关键词相关度的方法。紧邻距离虽然不应该作为给文档排序的唯一指标,但在一些情况下通过设定阈值可以过滤掉相当一部分无关的结果。

N关键词的紧邻距离计算公式如下:

假定第i个关键词首字节出现在文本中的位置为P_i,长度L_i,紧邻距离为

ArgMin(Sum(Abs(P_(i+1) - P_i - L_i)))

具体计算过程为先取定一个P_1,计算所有P_2的可能值中令Abs(P_2 - P_1 - L1)最小,然后固定P2后依照同样的方法选择P3,P4,等等。遍历所有可能的P_1得到最小值。

具体实现见core/indexer.go文件中computeTokenProximity函数。

紧邻距离计算需要在索引器中保存每个分词的位置,这需要额外消耗内存,因此是默认关闭的,打开这一功能请在引擎初始化时设定 EngineInitOptions.IndexerInitOptions.IndexType为LocationsIndex。