Sphinx设置选择分拣模式问题


Sphinx SetSelect sortmode issue

我一直试图对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);禁用内部排名。