0

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

我试图阅读关于权重的 Sphinx 文档,但它令人难以置信的混乱并且充满了我不太了解的术语。我想保持搜索与它大致相同,我只想稍微提高对最近 pub_dates 的结果的排名。

4

3 回答 3

4

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

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

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

于 2011-02-12T12:20:59.817 回答
1

$cl->SetSortMode (SPH_SORT_EXPR, "@id"); 这给了你一个斜坡——越近,越重。只需执行 @id * 2 以使效果加倍或 /2 以抑制它。

这是行不通的,因为使用绝对值很难预测结果。例如,两个帖子的 id 分别为 100 和 id 99000,但 id 100 的权重非常好, id 99000 的权重非常差,这将提高 id 99000。

于 2011-02-17T09:36:41.773 回答
0

$cl->SetSortMode ( SPH_SORT_EXPR, "@id" );这给了你一个斜坡——越近,越重。只需@id * 2将效果加倍或/ 2减弱即可。

于 2011-02-13T16:53:05.483 回答