sphinx搜索结果不准确,可能的原因之二:字段权重设置的过大,超出32位
2015-06-19 16:16
363 查看
在sphinx的文档中,有说明:
SetFieldWeights (设置字段权重)
原型: function SetFieldWeights ( $weights ) 按字段名称设置字段的权值。参数必须是一个hash(关联数组),该hash将代表字段名字的字符串映射到一个整型的权值上。 字段权重影响匹配项的评级。第 5.4 节 “权值计算” 解释了词组相似度如何影响评级。这个调用用于给不同的全文数据字段指定不同于默认值的权值。 给定的权重必须是正的32位整数。最终的权重也是个32位的整数。默认权重为1。未知的属性名会被忽略。 目前对权重没有强制的最大限制。但您要清楚,设定过高的权值可能会导致出现32位整数的溢出问题。例如,如果设定权值为10000000并在扩展模式中进行搜索,那么最大可能的权值为10M(您设的值)乘以1000(BM25的内部比例系数,参见第 5.4 节 “权值计算”, “权值计算”)再乘以1或更多(词组相似度评级)。上述结果最少是100亿,这在32位整数里面没法存储,将导致意想不到的结果。
SetFieldWeights (设置字段权重)
原型: function SetFieldWeights ( $weights ) 按字段名称设置字段的权值。参数必须是一个hash(关联数组),该hash将代表字段名字的字符串映射到一个整型的权值上。 字段权重影响匹配项的评级。第 5.4 节 “权值计算” 解释了词组相似度如何影响评级。这个调用用于给不同的全文数据字段指定不同于默认值的权值。 给定的权重必须是正的32位整数。最终的权重也是个32位的整数。默认权重为1。未知的属性名会被忽略。 目前对权重没有强制的最大限制。但您要清楚,设定过高的权值可能会导致出现32位整数的溢出问题。例如,如果设定权值为10000000并在扩展模式中进行搜索,那么最大可能的权值为10M(您设的值)乘以1000(BM25的内部比例系数,参见第 5.4 节 “权值计算”, “权值计算”)再乘以1或更多(词组相似度评级)。上述结果最少是100亿,这在32位整数里面没法存储,将导致意想不到的结果。
相关文章推荐
- sudo指令执行速度很慢问题(转)
- sphinx搜索结果不准确,可能的原因之二:字段权重设置的过大,超出32位
- Python cpu与cpu上的多线程的区别讲解
- sphinx搜索结果不准确,可能的原因之一:docid重复
- cannot set options after executing query
- python调用Shell脚本:os.system(cmd)或os.popen(cmd)()【转】
- Python 和其他编程语言数据类型的比较
- 关于前台判断文件上传大小的JS
- Django 性能测试——一个现实世界的例子
- Tokyo Tyrant(ttserver)在大数据量下的不稳定案例
- (转载)谈CRC32碰撞的概率和可能性
- sphinx启动searchd服务时,报segmentation fault (段错误)
- Linux的cron和crontab
- python删除非空目录的方法
- (转)如何使用Psyco为你的Python程序提速。
- Python模块subprocess小记
- windows平台下如何用Python杀进程
- UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
- 万物互联,服务万家
- gpfdist工具的初级使用