2017-05-10 1 views
0

나는 종류가 존재하는 항목과 목록이 : 스핑크스와스핑크스 검색 쿼리 - 조건 번호에 대한 VARCHAR 열에

id | name  | categories(varchar) 
1 | bike red | 2,5,18 
2 | bike black | 4,7,13 

내가 예를 들어 serach해야합니다 자전거 만의 카테고리에서를 5

열 카테고리에서 검색하는 좋은 방법이 있습니까?

는 MySQL의에서 나는 쓸 수있다 : 이름 LIKE '% 자전거 %'AND 카테고리 '% 5 %'

좋아하지만 내 스핑크스 지수가 크고 검색이 efective하지 될 수있는 곳. 정수 ENUM리스트를 만들거나 또는? 좋은 해결책이 될 수 있을까요?

감사

답변

0

스핑크스는 다중 값이 http://sphinxsearch.com/docs/current.html#mva 속성이 있습니다. 꽤 완벽!

MySQL에서 숫자 set과 다소 비슷합니다. (여러 카테고리가 있으므로 enum이 아님)

색인 생성 중에 쉼표로 구분 된 숫자의 문자열 목록을 자동으로 구문 분석합니다.

sql_query = SELECT id,name,categories FROM item 
sql_attr_multi = uint categories from field; 

그런 다음 sphinxQL 쿼리

...

SELECT * FROM item WHERE MATCH('bike') AND categories=5 

는 (이 MySQL과 익숙 경우 혼란을 보일 수 있습니다. 평등 필터를 MVA 속성에 actully 단지 이 값 중 하나에 해당 의미한다. 원하는 경우 쓸 수있는 categories IN (5) - 동일한 효과)