[mysql] 전문검색(FullText Search)

cateto·2022년 1월 11일
0
post-thumbnail
  • FullText Search(전문검색)
    • 정의 : 게시물의 내용이나 제목 등과 같이 문장이나 문서의 내용에서 키워드를 검색하는 기능. 이름이나 별명 등과 같은 단어에서 일부만 일치하는 사용자를 검색하는 기능으로도 사용할 수 있다. LIKE 검색 (%%) 은 인덱스를 사용하지 못할 수도 있지만, FullText Search는 일부만 검색하는 경우에도 전문 검색 인덱스를 사용할 수 있으므로 더 빠른 검색이 가능하다.
    • 인덱싱 방식 : 본문에서 키워드를 분석하여 인덱스를 구축할 때 어떤 알고리즘을 사용할 것인가?
      • MySQL 5.1 ~ 5.6 버전 대에서는 N-gram 방식의 인덱싱을 지원하기 때문에 단어나 어휘를 고려하지 않고 본문의 내용을 모두 잘라서 인덱스를 만들어 사용하게 된다.
    • MySQL build-in FullText Search
      • MySQL 5.5 버전까지는 MyISAM Storage Engine을 사용하는 테이블에서만 사용할 수 있었다. 5.6 버전 부터는 InnoDB에서도 사용이 가능하도록 기능이 추가되었고, 5.7 부터는 중국어/한글/일본어를 대응할 수 있는 Parser의 N-gram이 설치되어 있고, Mecab도 플러그인으로 사용이 가능하다.
    • StopWords
      • MySQL의 기본 stopwords INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD
      • stop word는 구분자라고도 표현하는데 대표적으로 띄워쓰기나 문장 기호 등을 기준으로 키워드를 추출해내고 그 결과를 인덱스로 구축하는 방식 입니다. 이러한 Stop word 방식은 키워드가 전부 일치하거나 prefix(전방) 가 일치할 때만 결과를 가져올 수 있습니다.
    • 사용자 정의 Stopwords
      • 외부 파일을 불러다 쓰기
      • Table을 생성하여 불러다 쓰기

출처 : https://hoing.io/archives/16853#7_InnoDB_FullText_Test

profile
Curious for Everything

0개의 댓글