전문(full-text) 검색
전문(full-text) 검색 (Full Text Search)
LIKE '%키워드%'로 검색해봤다면 금방 한계를 느꼈을 거예요. 단어의 형태(원형, 굴절, 동의어)를 고려하지 못하고, 검색 결과의 관련도(rank)도 매기기 어렵죠. PostgreSQL의 **Full Text Search(FTS, 전문 검색)**는 그런 검색을 데이터베이스 안에서 제대로 처리해주는 기능이에요. 열(column) 또는 데이터베이스 전반을 대상으로 자연어 검색을 수행하는 방법을 제공한답니다.
개요 (Overview)
이 장에서는 PostgreSQL이 제공하는 전문 검색(full text search) 기능 전체를 다뤄요. 렉셈(lexeme) 단위로 문서를 쪼개고, 형태소 분석과 스톱워드(stop words) 처리를 거쳐 검색을 준비하고, 마지막으로 관련성 순위(ranking)까지 매기는 흐름을 하나씩 살펴볼게요.
내용은 크게 아래 하위 주제로 나뉘어요.
소개 (Introduction)
- 12.1. Introduction — FTS의 개념과 기본 구조를 소개해요.
- 12.1.1. What Is a Document? — 검색 대상이 되는 "문서(document)"가 무엇인지 정의해요.
- 12.1.2. Basic Text Matching — 문서와 질의(쿼리)를 어떻게 매칭시키는지 기본을 봐요.
- 12.1.3. Configurations — 언어별·목적별로 형태소 분석 설정(configuration)을 고르는 방법이에요.
테이블과 인덱스 (Tables and Indexes)
- 12.2. Tables and Indexes
- 12.2.1. Searching a Table — 테이블의 열을 대상으로 검색하는 법이에요.
- 12.2.2. Creating Indexes — 검색을 빠르게 하기 위한 인덱스 생성 방법이에요.
검색 제어 (Controlling Text Search)
- 12.3. Controlling Text Search
- 12.3.1. Parsing Documents — 문서를 파싱하는 과정이에요.
- 12.3.2. Parsing Queries — 검색 질의를 파싱하는 과정이에요.
- 12.3.3. Ranking Search Results — 결과의 관련성을 순위로 매기는 방법이에요.
- 12.3.4. Highlighting Results — 검색어가 드러나도록 결과를 강조(하이라이팅)하는 방법이에요.
추가 기능 (Additional Features)
- 12.4. Additional Features
- 12.4.1. Manipulating Documents —
tsvector문서 값을 조작하는 법이에요. - 12.4.2. Manipulating Queries —
tsquery질의 값을 조작하는 법이에요. - 12.4.3. Triggers for Automatic Updates — 변경 시 자동으로 갱신되도록 하는 트리거에요.
- 12.4.4. Gathering Document Statistics — 문서 통계를 모으는 방법이에요.
- 12.4.1. Manipulating Documents —
파서와 사전 (Parsers and Dictionaries)
- 12.5. Parsers — 텍스트를 토큰으로 쪼개는 파서에 대한 설명이에요.
- 12.6. Dictionaries — 토큰을 표준화하고 스톱워드를 걸러내는 사전(dictionary)에 대한 설명이에요.
- 12.6.1. Stop Words — 검색에서 제외할 불용어에요.
- 12.6.2. Simple Dictionary
- 12.6.3. Synonym Dictionary — 동의어 사전이에요.
- 12.6.4. Thesaurus Dictionary — 유의어 사전이에요.
- 12.6.5. Ispell Dictionary — Ispell 기반 형태소 사전이에요.
- 12.6.6. Snowball Dictionary — Snowball 스테머(stemmer) 기반 사전이에요.
설정, 테스트, 인덱스, psql, 한계 (Config, Testing, Indexes, psql, Limitations)
- 12.7. Configuration Example — 전체 설정을 실제 예시로 구성해보는 과정이에요.
- 12.8. Testing and Debugging Text Search — 설정·파서·사전을 각각 테스트하는 방법이에요.
- 12.9. Preferred Index Types for Text Search — FTS에 권장되는 인덱스 유형(GIN 등)이에요.
- 12.10. psql Support — psql에서 FTS를 사용하는 방법이에요.
- 12.11. Limitations — 현재 FTS의 한계점이에요.
더 알아보기 (Learn more)
- 12.1. Introduction — FTS 개념부터 시작해요
- 12.2. Tables and Indexes — 테이블 검색과 인덱스 생성
- 12.8. Testing and Debugging Text Search — 설정 검증과 디버깅
- GIN 인덱스 — FTS에 자주 쓰이는 인덱스