>  기사  >  데이터 베이스  >  MySQL의 전체 텍스트 검색 기술

MySQL의 전체 텍스트 검색 기술

WBOY
WBOY원래의
2023-06-15 17:33:352533검색

MySQL은 현재 가장 일반적으로 사용되는 관계형 데이터베이스 중 하나이며, 전체 텍스트 검색도 매우 중요한 기능입니다. 이 기사에서는 MySQL의 전체 텍스트 검색 기술을 소개하고 전체 텍스트 검색에 MySQL을 더 잘 사용할 수 있도록 도와줍니다.

1. 전체 텍스트 검색 지원 구성

MySQL에서 전체 텍스트 검색 기능을 사용하려면 먼저 서버에서 이 기능을 활성화했는지 확인해야 합니다. MySQL 5.6.4 이상에서는 다음 명령을 실행하여 전체 텍스트 검색이 활성화되었는지 확인할 수 있습니다.

SHOW VARIABLES LIKE 'innodb_ft%';

innodb_ft_server가 ON으로 설정된 경우 전체 텍스트 검색이 활성화되었습니다.

전체 텍스트 검색 지원이 활성화되지 않은 경우 my.cnf(또는 my.ini) 파일을 수정하여 ft_min_word_len 매개변수 값을 찾고 있는 단어의 최소 길이로 설정해야 합니다. 기본적으로 해당 값은 4입니다. 예를 들어 길이가 3인 단어를 찾으려면 해당 값을 3으로 변경하고 MySQL 서비스를 다시 시작해야 합니다.

2. 전체 텍스트 인덱스 생성

전체 텍스트 검색 지원이 활성화되면 검색해야 하는 테이블에 대한 전체 텍스트 인덱스를 생성할 수 있습니다. 전체 텍스트 인덱스를 만드는 것은 전체 텍스트 검색이 필요한 열에 FULLTEXT 인덱스를 만드는 것만큼 간단합니다. 예를 들어, 기사 본문 내에서 전체 텍스트 검색을 수행하려면 다음 명령을 사용하여 "articles" 테이블의 "content" 열에 FULLTEXT 인덱스를 생성할 수 있습니다.

ALTER TABLE articles ADD FULLTEXT(content);

이렇게 하면 전체 텍스트 검색 쿼리 가속화를 위한 "content" 열의 FULLTEXT 인덱스입니다. FULLTEXT 인덱스는 CHAR, VARCHAR 또는 TEXT 데이터 유형의 열에서만 생성될 수 있습니다. 전체 텍스트 인덱스가 생성되면 전체 텍스트 검색을 시작할 수 있습니다.

3. 전체 텍스트 검색 쿼리 사용

MySQL을 사용한 전체 텍스트 검색 구문은 일반 SQL 쿼리 문과 매우 유사합니다. 예를 들어, "MySQL"이라는 단어가 포함된 모든 기사를 찾는 명령문은 다음과 같습니다.

SELECT * FROM articles WHERE MATCH(content) AGAINST('MySQL');

그 중 MATCH 절에는 검색할 컬럼을 지정하고, AGAINST 절에는 검색할 키워드를 지정합니다. 여러 열에서 전체 텍스트 검색을 수행하려면 열을 나열하면 됩니다. 예를 들어 기사 본문과 제목 모두에 "MySQL"이 포함된 기사를 검색하려면 다음 명령을 사용할 수 있습니다.

SELECT * FROM articles WHERE MATCH(title,content) AGAINST('MySQL');

전체 텍스트 검색 쿼리를 만들 때 일반적으로 다음 문제에 주의해야 합니다.

  1. 순서대로 단어 일치: 기본값, MySQL은 검색된 키워드를 단일 단어로 처리하고 가장 일치하는 항목을 기준으로 정렬합니다. 여러 단어를 순서대로 일치시키려면 큰따옴표를 사용하여 단어를 묶을 수 있습니다. 예를 들어 텍스트에 "MySQL" 및 "database"가 포함된 모든 기사를 쿼리하려면 다음 명령을 사용할 수 있습니다.
SELECT * FROM articles WHERE MATCH(content) AGAINST('"MySQL database"' IN BOOLEAN MODE);
  1. 부울 패턴 일치 사용: MySQL은 부울 패턴 쿼리를 제공하므로 데이터를 보다 유연하게 검색할 수 있습니다. . 예를 들어, 텍스트에 "MySQL"은 포함되어 있지만 "database"는 포함되지 않은 모든 기사를 찾으려면 다음 명령을 사용할 수 있습니다:
SELECT * FROM articles WHERE MATCH(content) AGAINST('+MySQL -database' IN BOOLEAN MODE);

부울 모드에서 더하기 기호 "+"는 해당 단어가 포함되어야 함을 의미하며, "빼기 기호"는 단어가 포함되어 있지 않음을 의미하고, "별표"는 임의의 단어와 일치함을 의미하고, "큰따옴표"는 전체 구문과 일치함을 의미합니다.

  1. 유사성 측정 조정: 기본적으로 MySQL은 단어 빈도를 기반으로 하는 유사성 측정을 사용하여 텍스트 간의 유사성을 결정합니다. 그러나 경우에 따라 유사성 척도를 조정해야 할 수도 있습니다. 예를 들어 음악 가사를 검색할 때 단어 빈도보다는 일치 여부에 더 많은 주의를 기울입니다. 유사성 측정을 조정하려면 AGAINST 함수의 매개변수에 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 매개변수를 지정할 수 있습니다. 예:
SELECT * FROM lyrics WHERE MATCH(text) AGAINST ('+love +song' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION);

이 예에서 MySQL은 자연어 패턴과 쿼리 확장을 사용하여 텍스트 간의 유사성을 확인하여 더 나은 일치 결과를 얻습니다.

4. 결론

전체 텍스트 검색은 현대 데이터베이스의 표준 기능이 되었으며 소셜 네트워크, 음악 및 비디오 관련 애플리케이션 등 다양한 분야에서 널리 사용됩니다. 여기에서는 MySQL 전체 텍스트 검색 기술을 소개합니다. 이러한 기술은 전체 텍스트 검색에 MySQL을 보다 효율적으로 사용하는 데 도움이 될 수 있습니다. 물론, 배우고 숙달해야 할 다른 기술과 기법도 많이 있습니다. 이 기사가 여러분에게 새로운 아이디어를 열어주고 더 많은 영감을 줄 수 있기를 바랍니다.

위 내용은 MySQL의 전체 텍스트 검색 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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