我在运行良好的 django 网站上进行了 Sphinx 搜索。它可以为各种查询找到出色的匹配项。我希望能够提高对新结果的排名。很多时候,多年前的文章的排名会高于全新的文章。较旧的文章更频繁地包含搜索词,因此具有更高的相关性,但新文章仍然非常相关,所以我希望它们首先出现。
我试图阅读关于权重的 Sphinx 文档,但它令人难以置信的混乱并且充满了我不太了解的术语。我想保持搜索与它大致相同,我只想稍微提高对最近 pub_dates 的结果的排名。
我在运行良好的 django 网站上进行了 Sphinx 搜索。它可以为各种查询找到出色的匹配项。我希望能够提高对新结果的排名。很多时候,多年前的文章的排名会高于全新的文章。较旧的文章更频繁地包含搜索词,因此具有更高的相关性,但新文章仍然非常相关,所以我希望它们首先出现。
我试图阅读关于权重的 Sphinx 文档,但它令人难以置信的混乱并且充满了我不太了解的术语。我想保持搜索与它大致相同,我只想稍微提高对最近 pub_dates 的结果的排名。
使用 SPH_SORT_EXPR 您可以通过算术表达式更改排序,例如:
$cl->SetSortMode ( SPH_SORT_EXPR, "@weight + IF(pub_date > strtotime('2011-01-01), 50, 0) );
在这个表达式中,从 2011 年 1 月 1 日开始发表的文章将获得 +50 的权重。
$cl->SetSortMode (SPH_SORT_EXPR, "@id"); 这给了你一个斜坡——越近,越重。只需执行 @id * 2 以使效果加倍或 /2 以抑制它。
这是行不通的,因为使用绝对值很难预测结果。例如,两个帖子的 id 分别为 100 和 id 99000,但 id 100 的权重非常好, id 99000 的权重非常差,这将提高 id 99000。
$cl->SetSortMode ( SPH_SORT_EXPR, "@id" );
这给了你一个斜坡——越近,越重。只需@id * 2
将效果加倍或/ 2
减弱即可。