2014-06-10 5 views
0

열 이름, 전화 번호 및 나와 관계가있는 큰 테이블이 있습니다 (친구, 가족, 지인 등). 스핑크스에서 이름을 검색 할 때 필자는 필드 값이 "family"인 결과에 "acquaintance"보다 더 높은 가중치를 부여하기를 원합니다. 특정 행의 가중치를 높이기 위해 수동으로 해당 행의 가중치를 수동으로 설정하려면 어떻게합니까?스핑크스 - 필드 값으로 결과를 측정합니다.

답변

0

많은 옵션 ...

A) 당신이 attribute에서 '형식'를 저장할 수 - 속성 field의 달리 (TEH 인덱스에 저장)하고 결과를 정렬 할 수 있습니다.

정확히 당신이 그것을하는 것은 크게 개인적인 취향의 문제입니다. 예를 들어

:

sql_query = SELECT id,name,phone,type,(type=family) as boost from table 
sql_attr_bool = boost 

는 다음 쿼리는 부스트 속성으로 정렬 할 수 있습니다. ... ORDER BY boost DESC, WEIGHT() DESC

유형을 일반 숫자 정수로 저장할 수도 있습니다. 각 유형에 대한 값은 해당 열에서 자연스럽게 정렬 할 수 있습니다.


또는 B) 당신은 실제로 단지 field로 유형을 남겨, 그 결과를 높일 수 있습니다,

예를 확장 쿼리 또는 양쪽에

john | (john @type family) 

필요 존에 대한, 그래서 항상 john을 포함하는 행을 갖습니다. 그러나 양측 모두에서 가족과 일치하는 결과가 더 많은 키워드와 일치하고 더 높은 순위를 갖기 때문에

필드 가중치 옵션을 사용하여 결과에 영향을 줄 정도를 선택할 수 있습니다.

+0

감사합니다, 도움이 대답을 (스핑크스의 최신 버전이 더 쉽게 할 어쩌면 연산자가 있습니다)! – user3038754