【发布时间】:2015-03-25 18:58:42
【问题描述】:
我有一个使用 sphinx 版本 0.9.9-release (r2117) 的服务(我知道..我知道..它超级旧,但更新 sphinx 根本不是一种选择)。
狮身人面像设置:
限制 1000000
偏移量 0
索引主+增量
基本上它是一个配置文件表。首先,我必须按性别和年龄对个人资料进行排序。比我需要添加一些随机化来从这些排序中获取各种配置文件。
我目前的排序表达式相当复杂:
$sortExpression .= " + (" . bindec('10000000000000000') . " * (gender <> 0))";
$sortExpression .= " + ((age > 0) * (" . bindec('111111100000000') . " - ABS(age - " . $this->mProfileInfo['age'] . ")))";
...
// Random.
$randomMod = floor(mt_rand(0, 385));
$sortExpression .= " + ((idprofile - (FLOOR(idprofile / " . $randomMod . ") * " . $randomMod . ")) * 0.01)";
我还需要多次调用 sphinx search 并收集所有这些调用的结果。问题在于,在一百个可用配置文件中,结果集中总是存在重复(几个 sphinx 调用的结果)。
如何减少排序数据的 sphinx 搜索结果中的重复?
【问题讨论】:
-
“(几次狮身人面像调用的结果)”到底是什么意思?为什么要打多次?你想做什么?
-
@barryhunter,感谢您的帮助!我已经失去了希望有人能回答我的问题。解释细节并不容易,而且我一般是狮身人面像的菜鸟。逻辑是按年龄和性别查找个人资料的匹配项。有一个年龄范围。关键是对于多个配置文件,选择了相同的匹配配置文件 - 无论我在同一年龄范围内有数百个配置文件。我需要在那里添加一些随机化。
-
您的意思是您看到某些配置文件“出现”在随机结果中,比其他配置文件更频繁?是不是因为您使用了错误的“随机排序”方法。您当前的系统非常有偏见,带有素数 id 的文档将显示与容易整除的数字非常不同(我不知道是少还是多,因为它取决于表达式的其余部分和排序顺序)。你需要一个更好的随机系统。很难在不了解的情况下推荐一个