2012-03-19 63 views
0

我一直在试图进行排序,如下图所示setselect方法定义的别名领域,但它返回不相关的记录,在嵌套IF条件狮身人面像SetSelect sortmode问题

SetSelect狮身人面像查询

$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别名字段中定义的值进行排序?

回答

1

现在Rank不是定义的属性,所以你不能使用SPH_SORT_ATTR_ASC

要基于表达式排序,请使用SPH_SORT_EXPR instead

+0

好的。但是使用SPH_SORT_EXPR,我们可以对ASC或DESC值进行排序吗? – Raja 2012-03-19 16:43:59

+0

@Yadheendran:无论你想要什么。这是你的表情,你制定它,你在控制。 ASC或DESC认为它只是一个观点问题,例如,例如1至10或-10至-1,例如如果您需要升序,请将其乘以-1。 – hakre 2012-03-19 16:49:05

0

'等级'是@weight的内部alais。

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

也应该设置$ sphinxObj-> setRankingMode(SPH_RANK_NONE);禁用内部排名。