sphinx搜索结果不准确,可能的原因之二:字段权重设置的过大,超出32位

来源:互联网 发布:淘宝直播流量越来越少 编辑:程序博客网 时间:2024/05/17 01:27

在sphinx的文档中,有说明:

 

      SetFieldWeights (设置字段权重)

原型: function SetFieldWeights ( $weights )

按字段名称设置字段的权值。参数必须是一个hash(关联数组),该hash将代表字段名字的字符串映射到一个整型的权值上。

字段权重影响匹配项的评级。第 5.4 节 “权值计算” 解释了词组相似度如何影响评级。这个调用用于给不同的全文数据字段指定不同于默认值的权值。

给定的权重必须是正的32位整数。最终的权重也是个32位的整数。默认权重为1。未知的属性名会被忽略。

目前对权重没有强制的最大限制。但您要清楚,设定过高的权值可能会导致出现32位整数的溢出问题。例如,如果设定权值为10000000并在扩展模式中进行搜索,那么最大可能的权值为10M(您设的值)乘以1000(BM25的内部比例系数,参见第 5.4 节 “权值计算”, “权值计算”)再乘以1或更多(词组相似度评级)。上述结果最少是100亿,这在32位整数里面没法存储,将导致意想不到的结果。

0 0
原创粉丝点击