12.9 Full-Text 검색 기능
MATCH (
col1
, col2
, ...) AGAINST ( expr
[ search_modifier
)
search_modifier :
{
IN NATURAL LANGUAGE MODE
| IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
| IN BOOLEAN MODE
| WITH QUERY EXPANSION
}
MySQL에서는 다음과 같은 텍스트 인덱싱 설정 및 검색을 지원합니다.
MySQL의 전체 텍스트 인덱싱은 형태
FULLTEXT
인덱스입니다.전체 인덱스는
InnoDB
또는MyISAM
테이블에서만 사용할 수 있으며,CHAR
,VARCHAR
, 또는TEXT
컬럼에만 만들 수 있습니다.FULLTEXT
인덱스 정의는 테이블을 만들 때CREATE TABLE
문에서 지정하거나 나중에ALTER TABLE
또는CREATE INDEX
를 사용하여 추가 할 수 있습니다.데이터 세트가 큰 경우는
FULLTEXT
인덱스가 붙어 있지 않은 테이블에로드하고, 그 후에 인덱스를 생성하는 것이 기존의FULLTEXT
인덱스를 가진 테이블에로드하는 것보다 훨씬 빠릅니다.
전문 검색은 MATCH() ... AGAINST
구문을 사용하여 실행됩니다. MATCH()
는 검색 대상의 컬럼 이름을 쉼표로 구분 된 목록을 지정합니다. AGAINST
는 검색 문자열과 수행 할 검색 유형을 나타내는 옵션의 규정자를 지정합니다. 검색 문자열은 쿼리 평가시 상수 문자열 값으로해야합니다. 예를 들어 테이블 컬럼은 행마다 다를 수 있기 때문에 제외됩니다.
전체 텍스트 검색은 다음의 3 가지 종류가 있습니다.
자연어 검색은 검색 문자열이 인간의 자연적인 언어로 문구 (자유 텍스트 문구)로 해석됩니다. 특별한 연산자는 없습니다. 중지 단어 목록이 적용됩니다. 이들은
InnoDB
검색 인덱스의 경우innodb_ft_enable_stopword
,innodb_ft_server_stopword_table
및innodb_ft_user_stopword_table
,MyISAM
검색 인덱스의 경우ft_stopword_file
의해 제어됩니다. 자세한 내용은 섹션 12.9.4 "전문 스톱 워드" 를 참조하십시오.IN NATURAL LANGUAGE MODE
한정자되어있는 경우 또는 수식이 전혀 지정되지 않은 경우 전체 텍스트 검색을 자연어 검색됩니다. 자세한 내용은 섹션 12.9.1 "자연 언어 텍스트 검색」 을 참조하십시오.boolean 검색은 특별한 쿼리 언어 규칙을 사용하여 검색 문자열을 해석됩니다. 문자열은 검색 할 단어가 포함되어 있습니다. 또한 일치하는 행에 단어가 존재한다 또는 존재해서는 않도록, 혹은 평소보다 단어의 가중치가 높게 또는 낮게되도록 요구 사항을 지정하는 연산자를 포함 할 수 있습니다 . 특정 공통 단어 또는 중지 단어는 검색 인덱스에서 생략 된 검색 문자열에 존재하지 않는 경우 일치가되지 않습니다.
IN BOOLEAN MODE
수식은 boolean 검색을 지정합니다. 자세한 내용은 섹션 12.9.2 "불리 안 전문 검색" 을 참조하십시오.쿼리 확장 검색은 자연어 검색을 개선 한 것입니다. 자연어 검색을 수행 할 때 검색 문자열이 사용됩니다. 그 후, 검색에서 반환 된 가장 관련성이 높은 줄에서 단어가 검색 문자열에 추가 검색을 다시 실행됩니다. 쿼리는 두 번째 검색에서 행을 반환합니다.
IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
또는WITH QUERY EXPANSION
한정자는 쿼리 확장 검색을 지정합니다. 자세한 내용은 섹션 12.9.3 "쿼리 확장을 사용한 전문 검색" 을 참조하십시오.
FULLTEXT
쿼리의 성능은 섹션 8.3.4 "컬럼 인덱스" 를 참조하십시오.
InnoDB
FULLTEXT
인덱스 처리에 대한 자세한 기술 정보는 섹션 14.2.13.3 "FULLTEXT 인덱스" 를 참조하십시오.
전문 검색 제약은 섹션 12.9.5 "전문 제한" 에 나열되어 있습니다.
myisam_ftdump 유틸리티는 MyISAM
전체 인덱스의 내용을 덤프합니다. 이것은 전체 쿼리를 디버깅 할 때 도움이 될 수 있습니다. 섹션 4.6.2 "myisam_ftdump - 전체 텍스트 인덱싱 정보보기" 를 참조하십시오.