2012-03-19 77 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);禁用內部排名。