Sphinx SetSelect sortmode问题

时间:2012-03-19 16:34:09

标签: php sphinx thinking-sphinx

我一直在尝试对setselect方法中定义的alias字段进行排序,如下所示,但它返回了无关的记录,

嵌套IF条件中的SetSelect sphinx查询

$sphinxObj->SetSelect("*, IF(CityId>2 AND CityId<10,1,IF(CityId>12 AND CityId<20,2,IF(CityId>22 AND CityId<30,3,IF(CityId>33 AND CityId<40,4,0)))) as Rank");

以下是Rank值,无法对字段进行排序(ASC或DESC)。

Rank: 4
Rank: 4
Rank: 4
Rank: 2
Rank: 4
Rank: 2
Rank: 10
Rank: 5
Rank: 2
Rank: 2
Rank: 3
Rank: 1
Rank: 4
Rank: 4
Rank: 3
Rank: 2
Rank: 10
Rank: 10
Rank: 10
Rank: 10

我尝试了$sphinxObj->SetSortMode(SPH_SORT_ATTR_ASC, "Rank");,但却抛出了无关的记录。请对此有任何建议,如何对SetSelect别名字段中定义的值进行排序?

2 个答案:

答案 0 :(得分:1)

目前Rank不是已定义的属性,因此您无法使用SPH_SORT_ATTR_ASC

您希望根据表达式进行排序,请使用SPH_SORT_EXPR instead

答案 1 :(得分:0)

'rank'是@weight的内部alais。

我建议为新属性使用不同的名称。

还应该设置$ sphinxObj-&gt; setRankingMode(SPH_RANK_NONE);禁用内部排名。