유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

Stop Using LIKE Operators! Master Postgres Full-text Search in 5 Minutes

Supabase

2025. 9. 24.

0

#db
  • PostgreSQL의 LIKE 연산자 대신 내장된 전문 검색 기능이 더 스마트하고 빠르며 단어 변형까지 인식하여 효율적인 키워드 검색을 제공합니다. 🚀
  • to_tsvector 함수는 텍스트를 검색에 최적화된 tsvector 형식으로 변환하며, 불필요한 단어(불용어)를 제거하고 단어를 정규화(어간 추출)합니다. 📚
  • to_tsquery 함수는 검색 키워드를 tsquery 형식으로 변환하며, @@ 연산자를 사용하여 tsvectortsquery 간의 전문 검색을 수행합니다. 🔍
  • 여러 컬럼(예: 제목, 설명, 저자)을 결합하여 하나의 tsvector를 생성함으로써 광범위한 검색이 가능합니다. 🔗
  • websearch_to_tsquery 함수는 Google 검색처럼 작동하여 공백으로 구분된 키워드는 AND 검색, OR 키워드는 OR 검색, - 기호는 부정 검색을 지원합니다. 🌐
  • 검색 성능과 확장성을 위해 tsvector를 생성된 컬럼(generated column)으로 만들고, 해당 컬럼에 GIN 인덱스를 추가하여 검색 속도를 최적화해야 합니다. ⚡
  • ts_rank 함수는 문서와 검색어 간의 관련성 점수를 계산하여 검색 결과의 중요도를 파악하고 순위를 매기는 데 사용됩니다. 📊
  • setweight 함수를 사용하여 특정 컬럼(예: 제목)에 가중치(A, B, C, D, A가 가장 높음)를 부여함으로써 검색 결과의 우선순위를 조절할 수 있습니다. ⚖️
  • 최종적으로 가중치가 적용된 tsvector를 포함하는 생성된 컬럼과 GIN 인덱스를 활용하여 효율적이고 순위가 매겨진 전문 검색 쿼리를 구성할 수 있습니다. ✨
  • Supabase와 같은 클라이언트 라이브러리에서 전문 검색 기능을 활용하기 위해 PostgreSQL 함수를 생성하여 RPC 호출로 사용할 수 있습니다. 💻

Recommanded Videos