24.2.3.2 Full-Text Parser Plugins
MySQL은 전체 작업 (인덱싱되는 텍스트의 구문 분석 또는 검색에 사용되는 용어를 판별하기위한 쿼리 문자열의 구문 분석)을 위해 기본적으로 사용되는 내장 파서가 있습니다. 전문 처리의 경우 "구문 분석"이란 단어를 구성하는 문자 순서와 단어 사이의 위치를 정의하는 규칙에 따라 텍스트 또는 쿼리 문자열에서 단어를 추출하는 것을 의미합니다.
인덱스를 생성하기 위해 구문 분석 할 때, 파서는 각 단어를 서버에 전달하고 서버는 단어를 전체 텍스트 인덱싱에 추가합니다. 쿼리 문자열을 구문 분석 할 때, 파서는 각 단어를 서버에 전달하고 서버는 단어를 축적하고 검색하는 데 사용합니다.
임베디드 전문 파서 파싱 특성은 섹션 12.9 "전체 텍스트 검색 함수" 에 기재되어 있습니다. 이러한 특성은 텍스트에서 단어를 추출하는 방법을 결정하는 규칙도 포함되어 있습니다. 파서는 짧은 단어 나 긴 단어를 제외 ft_min_word_len
, ft_max_word_len
같은 특정 시스템 변수 및 무시되는 일반적인 단어를 나타내는 스톱 워드리스트의 영향을받습니다.
플러그인 API를 사용하면 자신의 전문 파서를 작성하고 파서의 기본적인 기능을 제어 할 수 있습니다. 파서 플러그인은 두 가지 역할 중 하나에서 작동 할 수 있습니다.
플러그인을 내장 파서 대신 사용할 수 있습니다. 이 역할은 플러그인은 구문 분석하는 대상의 입력 데이터를 읽고 입력 데이터를 단어로 구분하여 단어를 (인덱스 설정 또는 단어의 축적을 위해) 서버에 전달합니다.
이 방법으로 파서를 사용하는 이유 중 하나는 입력 데이터를 단어로 분리하는 방법을 결정하기 위해 내장 파서의 규칙과는 다른 규칙을 사용할 필요가있는 경우입니다. 예를 들어 기본 파서는 "case-sensitive"라는 텍스트를 "case"및 "sensitive '이라는 두 단어로 구성되는 것으로 해석하지만, 응용 프로그램에서이 텍스트를 하나의 단어로 취급 할 필요가 있음 도 있습니다.
플러그인은 내장 파서의 프런트 엔드로 동작하여 내장 파서와 연동 할 수 있습니다. 이 역할은 플러그인은 입력 데이터에서 텍스트를 추출하여 텍스트를 파서에 전달 파서가 보통의 구문 분석 규칙을 사용하여 텍스트를 단어로 분리합니다. 이 구문 분석은 특히
ft_
시스템 변수 및 스톱 워드리스트의 영향을받습니다.xxx
이 방법으로 파서를 사용하는 이유 중 하나는 PDF 문서, XML 문서
.doc
파일 등의 콘텐츠를 인덱싱 할 필요가있는 경우입니다. 내장 파서는 이러한 유형의 입력 데이터를위한 것은 아니지만 플러그인을 사용하여 이러한 입력 소스에서 텍스트를 추출하여 텍스트를 내장 파서에 전달할 수 있습니다.
파서 플러그 인이 두 역할에서 작동 할 수 있습니다. 즉, 평문이 아닌 텍스트 입력에서 텍스트를 추출하고 (프런트 엔드 역할) 텍스트를 구문 분석하여 단어를 얻을 (내장 파서 양자 택일) 수 있습니다.
전체 플러그인은 각 인덱스에 전체 텍스트 인덱싱에 연결됩니다. 즉, 파서 플러그 인을 처음 설치 한 상태에서 전체 작업 파서 플러그 인을 사용 할 수 없습니다. 단순히 파서 플러그 인이 이용 가능하게 될뿐입니다. 예를 들어, 개별 FULLTEXT
인덱스를 만들 때 전체 파서 플러그인 WITH PARSER
절에 지정 할 수 있습니다. 테이블 생성시에 그러한 인덱스를 만들려면 다음 문을 실행합니다.
CREATE TABLE t ( doc CHAR(255), FULLTEXT INDEX (doc) WITH PARSER my_parser ) ENGINE=MyISAM;
또는 테이블이 작성된 후에 인덱스를 추가 할 수 있습니다.
ALTER TABLE t ADD FULLTEXT INDEX (doc) WITH PARSER my_parser;
파서를 인덱스에 연결하기 위해 SQL을 변경하는 부분은 WITH PARSER
절뿐입니다. 검색은 이전과 같이 지정 쿼리를 변경할 필요가 없습니다.
파서 플러그인을 FULLTEXT
인덱스에 연결하면 그 인덱스를 사용하기 위해이 플러그인이 필요합니다. 그 파서 플러그인이 삭제 된 경우, 파서 플러그인에 연결되어있는 모든 인덱스를 사용할 수 없습니다. 플러그인을 사용할 수없는 테이블을 사용하려고하면 오류가 발생하지만, DROP TABLE
은 계속 실행할 수 있습니다.
전체 플러그인 내용은 섹션 24.2.4.4 "전문 파서 플러그인 만들기" 를 참조하십시오. MySQL 5.6에서는 MyISAM
을 사용하여 전체 인덱스 플러그인 만 지원됩니다.