按sphinx中的过滤器字段和文本匹配排序进行排序

时间:2011-12-14 17:42:30

标签: sphinx

现在我正在使用Sphinx对我数据库中的某些实体进行文本搜索。为简单起见,我们假设这些实体是具有名称,描述和角色字段的客户端。

我在重量为200的名称上进行文本搜索,在这些字段上的匹配上进行重量为50的描述。一切都按预期工作。问题是,现在我需要按角色排序,让角色1始终排在第一位。

在普通查询中,我会做类似

的事情

... ORDER BY c.role DESC,c.sphinx_ranking DESC

这只能使用狮身人面像吗?我知道可以通过过滤器进行排序,但我不知道是否可以同时使用文本权重顺序和字段角色。

解决: 我找到了解读Sphinx文档的答案。如果有人遇到同样的问题,那就是解决方案:

要混合使用sphinx的权重和作为过滤器的字段,必须使用SPH_SORT_EXTENDED作为排序模式,并将参数传递给SQL语句中的字段。

在我的情况下,我正在使用php,所以代码是这样的:

$sphinxclient->SetSortMode(SPH_SORT_EXTENDED,"role DESC,@weight DESC"); 

其中@weight是Sphinx排名值,角色是我桌子上的一个字段。有了这个,我首先获得角色为1的客户端,然后通过sphinx文本评级对结果进行排序。非常简单!

0 个答案:

没有答案