>  기사  >  데이터 베이스  >  mysql 부울 텍스트 검색 튜토리얼

mysql 부울 텍스트 검색 튜토리얼

巴扎黑
巴扎黑원래의
2017-05-12 14:18:501858검색

MySQL은 부울 모드라는 또 다른 형태의 전체 텍스트 검색을 지원합니다. 부울 방식으로 다음 정보를 제공할 수 있습니다.

일치할 단어

1. 제외할 단어(행에 이 단어가 포함된 경우 반환되지 않음) , 다른 지정된 단어가 포함되어 있어도);

2. 배열 팁(일부 단어를 다른 단어보다 더 중요하게 지정하고 더 중요한 단어의 순위를 높게 지정)

3. 🎜>

4. 기타 콘텐츠.

FULLTEXT 인덱스가 없어도 사용 가능 Boolean 접근 방식은 FULLTEXT 인덱스가 정의되지 않은 경우에도 사용할 수 있다는 점에서 지금까지 사용된 전체 텍스트 검색 구문과 다릅니다. 그러나 이는 매우 느린 작업입니다(데이터 양이 증가하면 성능이 저하됩니다).

IN BOOLEAN MODE의 기능을 보여주기 위해 간단한 예를 들어보겠습니다.

입력:

select note_text from productnotes where match(note_text) against('anvils' in boolean mode);

출력:

mysql 부울 텍스트 검색 튜토리얼

분석: 이 전체 텍스트 검색은 Heavy라는 단어가 포함된 모든 줄(두 줄 있음)을 검색합니다. IN BOOLEAN MODE 키워드가 사용되었지만 실제로 Boolean 연산자가 지정되지 않았으므로 결과는 Boolean 모드가 지정되지 않은 것과 동일합니다.

IN BOOLEAN MODE 동작의 차이 이 예제의 결과는 IN BOOLEAN MODE가 없는 경우와 동일하지만 동작에는 중요한 차이가 있습니다(이 특정 예제에서는 표시되지 않지만).

heavy는 포함하지만 Rope로 시작하는 단어는 포함하지 않는 행을 일치시키려면 다음 쿼리를 사용하십시오.

입력:

select note_text from productnotes where match(note_text) against('heavy -rope' in boolean mode);

출력:

mysql 부울 텍스트 검색 튜토리얼

분석: 이번에는 한 행만 반환됩니다. 이번에는 단어 Heavy가 여전히 일치하지만 -rope*는 MySQL에게 Rope*를 포함하는 행(rope를 포함하여 Rope로 시작하는 모든 단어)을 제외하도록 명시적으로 지시합니다. 이것이 바로 이전 예의 첫 번째 행이 제외된 이유입니다.

MySQL 4.x에서 필요한 코드 변경 MySQL 4.x를 사용하는 경우 위의 예에서는 어떤 행도 반환하지 않을 수 있습니다. 이것은 * 연산자 처리의 버그입니다. MySQL 4.x에서 이 예제를 사용하려면 -rope* 대신 -ropes를 사용하십시오(rope로 시작하는 단어를 제외하는 대신 로프를 제외하려면).

두 개의 전체 텍스트 검색 부울 연산자인 *와 - 단어를 제외하는 반면 *는 잘림 연산자입니다(단어 끝을 나타내는 와일드카드로 생각하세요). 다음 표에는 지원되는 모든 부울 연산자가 나열되어 있습니다.

mysql 부울 텍스트 검색 튜토리얼

다음은 특정 연산자가 사용되는 방식을 보여주는 몇 가지 예입니다.

입력:

select note_text from productnotes where match(note_text) against('+rabbit +bait' in boolean mode);

분석: 이 검색 일치에는 행이 포함됩니다. 토끼와 미끼라는 단어로.

입력:

select note_text from productnotes where match(note_text) agains('rabbit bait' in boolean mode);

분석: 연산자를 지정하지 않으면 이 검색은 토끼 및 미끼라는 단어 중 하나 이상이 포함된 행과 일치합니다.

입력:

select note_text from productnotes where match(note_text) agains('"rabbit bait"' in boolean mode);

분석: 이 검색은 토끼와 미끼라는 두 단어를 일치시키는 대신 토끼 미끼라는 구문을 일치시킵니다.

입력:

select note_text from productnotes where match(note_text) agains(&#39;>rabbit <bcarrot&#39; in boolean mode);

분석: 토끼와 당근을 일치시켜 전자의 레벨을 높이고 후자의 레벨을 낮춥니다.

입력:

select note_text from productnotes where match(note_text) agains(&#39;+safe +(<combination)&#39; in boolean mode);

분석: 이 검색은 safe 및 조합 단어와 일치하여 후자의 순위를 낮춥니다.

정렬하지 않고 정렬 부울 모드에서는 반환된 행을 순위 값에 따라 내림차순으로 정렬하지 않습니다.

위 내용은 mysql 부울 텍스트 검색 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.