다음과 같은 쿼리 결과를 비교하고 있습니다.
SELECT * FROM object_search
WHERE
keywords LIKE '%,woman,%'
AND keywords LIKE '%,man,%'
...에
SELECT * FROM object_search
WHERE
MATCH (keywords) AGAINST ('+(",woman,") +(",man,")')
나는 똑같은 결과를 기대했지만 첫 번째 쿼리는 약 300 개의 결과를 내고 두 번째 쿼리는 3000에 가까운 결과를 내 보냅니다.
둘의 차이점은 무엇이며 전체 텍스트 기능을 사용하여 동일한 결과를 얻는 방법은 무엇입니까?
+
연산자는 검색에 사용된다 IN BOOLEAN MODE
. 나는 생각 이 무시됩니다 NATURAL LANGUAGE MODE
(기본값).
시험:
SELECT * FROM object_search
WHERE MATCH (keywords)
AGAINST ('+woman +man' IN BOOLEAN MODE); -- could return rows containing both "man" and "woman" (ignoring ft_min_word_len, see below)
게다가 전체 텍스트 색인은 단어 만 다룹니다. 구두점 기호 (예 :) ,
는 항상 무시됩니다. 영숫자가 아닌 문자를 "전체 텍스트 검색"할 수 없습니다.
마지막으로 기본적으로 4 자 미만의 단어는 무시됩니다. 따라서 기본적으로 "man"은 인덱싱되지 않습니다. 이 제한은 ft_min_word_len
구성 옵션을 통해 변경할 수 있습니다 .
또한 불용어 (인덱싱되지 않는 일반적인 단어)에 유의하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다