전체 텍스트 검색 개요

전체 텍스트 검색 (FTS)을 사용하면 쿼리를 충족하는 자연어 문서를 식별할 수 있습니다. 이 접근 방식은 'the'와 같은 일반적인 단어를 무시하고 'run', 'running', 'ran'과 같은 단어의 여러 형태를 일치시키는 등 언어적 미묘한 차이를 고려하므로 표준 문자열 일치보다 더 효과적입니다.

PostgreSQL용 AlloyDB는 모든 전체 텍스트 검색 기능과 기능을 지원합니다. GIN 및 GiST 색인 지원 외에도 AlloyDB는 고성능 전체 텍스트 검색을 위한 RUM 확장 프로그램도 제공합니다. PostgreSQL 17 이하에서는 이 확장 프로그램을 지원합니다.

전체 텍스트 검색 (FTS)을 효과적으로 구현하려면 PostgreSQL에서 텍스트를 처리하고 검색하는 방법을 이해해야 합니다. 검색 단위인 문서는 일반적으로 텍스트 열 또는 행의 열 조합입니다. 색인 빌드 프로세스는 이 문서를 파싱하여 단어 (또는 어휘소, 단어의 기본 형태인 )를 행과 연결합니다.

이 프로세스에는 다음을 통해 원시 텍스트를 검색 가능한 형식으로 변환하는 사전 처리 파이프라인이 포함됩니다.

  • 텍스트를 토큰으로 분할합니다.
  • 일반적인 불용어를 삭제합니다.
  • 단어를 어근 형태로 정규화합니다. 예를 들어 'run'은 'run', 'runs', 'running', 'ran'의 어휘소입니다.

전체 텍스트 검색을 사용하려면 특수 데이터 유형, 연산자, 기본 제공 PostgreSQL 색인 및 고성능 RUM 색인을 비롯한 다양한 색인 생성 전략에 대해서도 알아야 합니다.

PostgreSQL은 두 가지 기본 데이터 유형과 일치 연산자를 사용하여 FTS를 관리합니다.

  • tsvector: 검색 가능한 형식의 문서를 고유한 어휘소의 정렬된 목록으로 나타냅니다.
  • tsquery: 어휘소를 결합할 수 있는 불리언 연산자를 포함한 검색어를 나타냅니다.
  • @@: tsvectortsquery와 일치하는지 확인하여 언어 인식 검색을 허용합니다.

AlloyDB는 기본 제공 PostgreSQL에서 지원하는 전체 텍스트 검색의 모든 색인 유형을 지원합니다. 색인 선택은 검색 속도, 색인 빌드 시간, 업데이트 속도, 구문 검색 또는 관련성 순위 지정과 같은 필요한 특정 검색 기능 간의 균형에 따라 달라집니다.

AlloyDB는 복잡한 전체 텍스트 검색 작업을 위한 RUM 확장 프로그램도 지원합니다. RUM은 색인에 위치 정보를 직접 저장하여 표준 GIN 색인을 개선하므로 테이블 데이터에 액세스하지 않고도 더 빠른 구문 검색과 관련성 순위 지정을 실행할 수 있습니다.

AlloyDB에서 RUM 색인을 만들고 사용하는 방법에 대한 자세한 내용은 RUM 색인 만들기 및 관리를 참고하세요.

가장 강력한 검색 구현은 RUM 색인과 벡터 검색을 사용하는 전체 텍스트 검색을 결합하는 경우가 많습니다. 하이브리드 검색을 사용하여 시맨틱 이해와 정확한 키워드 일치의 강점을 병합하고 포괄적인 순위 지정을 위해 고유한 결과 집합을 병합합니다.

예를 들어 전자상거래 애플리케이션에서 먼저 RUM을 사용하여 전체 텍스트 검색을 통해 '런닝화'와 같은 특정 키워드가 포함된 제품을 찾고 벡터 검색을 사용하여 '장거리 훈련을 위한 편안한 신발'과 같은 사용자의 더 자세한 쿼리와 시맨틱 유사성을 기반으로 결과를 찾을 수 있습니다. 그런 다음 데이터베이스는 상호 순위 융합 (RRF) 알고리즘을 사용하여 두 검색 구성요소의 순위가 지정된 결과를 단일 통합 목록으로 융합하여 최종 순위를 생성합니다.

이 하이브리드 접근 방식을 사용하는 방법에 대한 자세한 내용은 하이브리드 벡터 유사성 검색 실행을 참고하세요.

다음 단계