인덱싱 후에는 Match() 및 Against() 두 함수를 사용하여 전체 텍스트 검색이 수행됩니다. 여기서 Match()는 검색할 열을 지정하고 Against()는 사용할 검색 표현식을 지정합니다.
다음은 예시입니다:
입력:
select note_text from productnotes where match(note_text) against('rabbit');
출력:
분석: 이 SELECT 문은 단일 열 note_text를 검색합니다. WHERE 절로 인해 전체 텍스트 검색이 수행됩니다. Match(note_text)는 MySQL에게 지정된 열을 검색하도록 지시하고 Against('rabbit')는 Rabbit이라는 단어를 검색 텍스트로 지정합니다. 두 행에 Rabbit이라는 단어가 포함되어 있으므로 이 두 행이 반환됩니다.
전체 Match() 설명 사용 Match()에 전달된 값은 FULLTEXT() 정의와 동일해야 합니다. 여러 열을 지정하는 경우 올바른 순서로 나열되어야 합니다.
검색은 대소문자를 구분하지 않습니다. 전체 텍스트 검색은 BINARY 모드를 사용하지 않는 한 대소문자를 구분하지 않습니다.
사실 지금은 다음과 같이 LIKE 절을 사용하여 간단히 검색할 수 있습니다.
입력:
select note_text from productnotes where note_text like '%rabbit';
출력:
분석: 이 SELECT 문도 두 개의 행을 검색하지만 순서는 다릅니다(항상 그런 것은 아니지만).
위의 두 SELECT 문에는 ORDER BY 절이 포함되어 있지 않습니다. 후자( LIKE 사용)는 특별히 유용하지 않은 순서로 데이터를 반환합니다. 전자(전체 텍스트 검색 사용)는 텍스트가 일치하는 정도에 따라 정렬된 데이터를 반환합니다. 두 줄 모두 Rabbit이라는 단어를 포함하지만 세 번째 단어로 Rabbit이라는 단어를 포함하는 줄은 20번째 단어를 포함하는 줄보다 순위가 높습니다. 이것은 중요합니다. 전체 텍스트 검색의 중요한 부분은 결과를 정렬하는 것입니다. 순위가 더 높은 행이 먼저 반환됩니다(실제로 원하는 행일 가능성이 높기 때문).
정렬 작동 방식을 보려면 다음 예를 살펴보세요.
입력:
select note_text match(note_text) against('rabbit') as rank from productnotes;
출력:
분석: 여기서는 WHERE 절 대신 SELECT에서 Match()와 Against()를 사용했습니다. 그러면 WHERE 절이 없기 때문에 모든 행이 반환됩니다. Match() 및 Against()는 전체 텍스트 검색으로 계산된 순위 값을 포함하는 계산된 열(rank라고도 함)을 만드는 데 사용됩니다. 순위는 행의 단어 수, 고유 단어 수, 전체 인덱스의 총
단어 수, 해당 단어가 포함된 행 수를 기준으로 MySQL에서 계산됩니다. 보시다시피, Rabbit이라는 단어가 포함되지 않은 행의 순위는 0입니다(따라서 이전 예의 WHERE 절에 의해 선택되지 않음). Rabbit이라는 단어가 포함된 두 줄에는 각각 순위 값이 있으며, 텍스트에서 단어 앞의 줄은 단어 뒤의 줄보다 순위 값이 더 높습니다.
이 예는 전체 텍스트 검색에서 행을 제외하고(순위가 0인 행 제외) 결과를 정렬(내림차순으로 순위별로 정렬)하는 방법을 설명하는 데 도움이 됩니다.
여러 검색어 정렬 여러 검색어가 지정된 경우 일치하는 단어가 가장 많이 포함된 행은 단어가 적거나 일치하는 단어가 하나만 포함된 행보다 순위 값이 높습니다.
보시다시피 전체 텍스트 검색은 단순한 LIKE 검색이 할 수 없는 기능을 제공합니다. 또한 데이터가 색인화되어 있으므로 전체 텍스트 검색이 매우 빠릅니다.
위 내용은 mysql 전체 텍스트 검색 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!