如何在Sphinx搜索中为新文章增加更多权重?

时间:2011-02-11 15:50:10

标签: search sphinx django-sphinx

我在一个运行良好的django网站上进行了Sphinx搜索。它为各种查询找到了极好的匹配。我希望能够提升排名以获得更新的结果。很多时候,多年前的文章排名都高于全新的文章。较旧的文章更频繁地包含搜索词,因此具有更高的相关性,但新文章仍然非常相关,所以我希望它们首先出现。

我试着阅读关于加权的Sphinx文档,但它令人难以置信地混淆并且填充了我不太懂的术语。我希望保持搜索大致相同,我只想稍微提高排名结果,使用更新的pub_dates。

3 个答案:

答案 0 :(得分:4)

使用SPH_SORT_EXPR,您可以通过算术表达式更改排序,例如:

$ cl-> SetSortMode(SPH_SORT_EXPR,     “@weight + IF(pub_date> strtotime('2011-01-01),50,0));

在此表达中,从2011年1月1日开始发表的文章将获得+50的权重。

答案 1 :(得分:1)

  

$ cl-> SetSortMode(SPH_SORT_EXPR,“@ id”);这会给你一个坡道 - 越近越重,越重。只是   执行@id * 2可使效果加倍,或使用/ 2来抑制效果。

这不起作用,因为使用绝对值很难预测结果。例如,两个id为100且id为99000的帖子,但是对于id为100非常好,而对于id为99000而言非常糟糕的权重将为id 99000。

答案 2 :(得分:0)

$cl->SetSortMode ( SPH_SORT_EXPR, "@id" );这会给你一个斜坡 - 越近越重,越重。只需@id * 2使效果加倍,或/ 2使效果加倍。