我一直在尝试对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别名字段中定义的值进行排序?
答案 0 :(得分:1)
目前Rank
不是已定义的属性,因此您无法使用SPH_SORT_ATTR_ASC
。
您希望根据表达式进行排序,请使用SPH_SORT_EXPR
instead。
答案 1 :(得分:0)
'rank'是@weight的内部alais。
我建议为新属性使用不同的名称。
还应该设置$ sphinxObj-&gt; setRankingMode(SPH_RANK_NONE);禁用内部排名。