Sphinx SetSelect проблема режима сортировки - PullRequest
0 голосов
/ 19 марта 2012

Я пытался отсортировать псевдоним поля, определенный в методе setselect, как показано ниже, но он возвращает нерелевантные записи,

Сфинкс-запрос SetSelect в условии Nested 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?

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Прямо сейчас Rank не является определенным атрибутом, поэтому вы не можете использовать SPH_SORT_ATTR_ASC.

Если вы хотите отсортировать на основе выражений, используйте SPH_SORT_EXPR вместо .

0 голосов
/ 19 марта 2012

'rank' является внутренним списком @weight.

Я предлагаю использовать другое имя для вашего нового атрибута.

также должен устанавливать $ sphinxObj-> setRankingMode (SPH_RANK_NONE);отключить внутренний рейтинг.

...