2010-01-24 8 views
1

공백에 토큰을 토큰 화하고 해당 문구에 가장 적합한 일치를 찾아야하는 쿼리가 있습니다. 먼저 일치 항목을 반환해야합니다. 나는 where 절을 사용하여 단일 쿼리에서이 작업을 수행하려고합니다. 이것이 가능한가?MySQL Where 절 일치 순서로 주문하십시오.

선택 이름 myTable에 어디에서 이름 = "내 어구"또는 이름 "% 내 %"와 같은 "% 내 구문 %"또는 (이름처럼 내 구 :

에 대한 : 나는이 라인을 따라 뭔가를하려고 해요 "% phrase %"와 같은 이름) ​​또는 ("% my %"와 같은 이름 또는 "% phrase %"와 같은 이름) ​​제한 5;

기본적으로 where 절이 일치하는 순서로 상위 5 개 일치를 원합니다. 나는 기본적으로 MySQL이 where 절을 최적화 된 방식으로 평가한다는 것을 알고있다. 순서대로 평가하도록하는 방법이 있습니까? 그렇다면 where 절을 일치시키는 순서로 결과를 반환 할 수 있습니까?

답변

1

대신 전체 텍스트 검색을 사용하십시오. 훨씬 빨라지고 유연하며 결과에 점수를 매길 수 있습니다. Google for more

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC; 
+0

아름다운. 그게 바로 내가 필요로했던 것입니다. MySQL에서 전체 텍스트 검색이 한 일이라는 것을 깨닫지 못했습니다. 더 깊게 파지 않는 것에 대한 어리석은 나를, 감사합니다! –