我一直试图对setselect方法中定义的别名字段进行排序,如下所示,但它返回了不相关的记录,
SetSelect嵌套IF条件中的狮身人面像查询
$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");
以下是无法对字段(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别名字段中定义的值进行排序?
现在Rank
不是已定义的属性,因此不能使用SPH_SORT_ATTR_ASC
。
如果要根据表达式进行排序,请改用SPH_SORT_EXPR
。
'rank'是@weight的内部alais。
我建议为你的新属性使用不同的名称。
还应设置$sphinxObj->setRankingMode(SPH_RANK_NONE);禁用内部排名。