2013-10-29 2 views
1

스핑크스에서 가격과 sale_price 속성을 스핀 츠의 인덱스에 추가했는데, 단지 페이지가 $s->SetSortMode(SPH_SORT_EXTENDED,'price desc');을 사용하여 잘 분류되어있는 것처럼 보였습니다. 그러나 몇 페이지 후에 가격이 다시 올라갔습니다.스핑크스에서 sql_attr_float로 정렬하기

예를 들어 1 페이지는 1,000 ~ 800 달러, 2 페이지는 800 ~ 500 달러, 3 페이지는 500 ~ 200 달러, 4 페이지는 4 백 ~ 100 달러 또는 임의의 가격으로 표시됩니다.

스핑크스가 분명히 무게 이벤트별로 분류하고 있는지 궁금합니다. 명시 적으로 말씀 드리지는 않았지만 문제가 있다고 생각하십니까?

나는 다른 아이디어들도 탐내는 데 열심이다. 또한, 나는 확실히 색인을 생성하고 모든 색인을 회전 시켰으며 스핑크스는 오류를 반환하지 않습니다.

미리 도움을 주셔서 감사합니다. 여기

내가 현재 사용하고있는 모든 옵션은 다음과 같습니다 (@barryhunter 업데이트) 추측에서

$s->SetMatchMode(SPH_MATCH_BOOLEAN); 
$s->SetSortMode(SPH_SORT_EXTENDED,'price desc'); 
$s->SetFilter("is_private", array(0)); 
$s->SetFilter("is_deleted", array(0)); 
$s->SetFilter("site_type", array(1)); 
$s->SetLimits($start, $count); 

답변

1

답변은 @barryhunter 님의 의견에 제안되었습니다!

mysql에 sort_price이라는 새 정수 col을 추가하고 으로 채 웁니다. 그런 다음 스핑크스에서 sql_attr_uint으로 그 열을 추가하고 정렬 완벽하게 작동합니다!

$s->SetSortMode(SPH_SORT_EXTENDED,'sort_price desc'); 

덕분에 배리 :

0

, 당신은 그룹-으로 사용하고 있습니까?

그렇다면 SetSortMode은 최종 결과의 순서를 설정하지 않습니다. 세 번째 매개 변수 인 setGroupBy대신이됩니다.

두 그룹 정렬 순서의 작동 방식을 보려면 그룹화 기준에 대한 설명서를 참조하십시오.

그렇지 않은 경우 가격을 저장하는 열 유형은 무엇입니까? 어쩌면 스핑크스로 변환되지 않고 올바르게 입력됩니다.

+0

사용의 모든 옵션을 내 질문에 업데이트되었습니다. 현재 그룹이 없습니다. : –

+0

또한 가격 및 sale_price에 대한 mysql col 유형 : DECIMAL (10,2) –

+1

그다지 알지 못합니다. 내 유일한 제안은 스핑크스 정수 속성을 사용하는 것입니다 (예 : 정수를 얻으려면 가격을 100으로 곱하십시오). 왜 그런지 모르지만 float를 사용하는 것보다 훨씬 신뢰할 수있는 (그리고 더 빠름) – barryhunter