이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 8.11. 텍스트 토토 베이 유형버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

8.11. 토토 베이 검색 유형

포스트그레SQL두 개의 데이터를 제공합니다 전체 텍스트 검색을 지원하도록 설계된 토토 베이입니다. 자연어 모음을 검색하는 활동문서가장 일치하는 항목을 찾으려면 에질의.ts벡터토토 베이은 최적화된 형식의 문서를 나타냅니다. 텍스트 검색을 위해; 그만큼tsquery비슷하게 입력하세요 토토 베이 쿼리를 나타냅니다.사설 토토 : 문서 : 9.3 : 전문 검색이 시설에 대한 자세한 설명을 제공합니다.9.13항관련 내용을 요약합니다. 함수와 연산자.

8.11.1. ts벡터

A ts벡터값은 정렬된 목록입니다. 별개의어휘, 이는 다음과 같은 단어입니다. 이미정규화다른 것을 병합하려면 같은 단어의 변형(참조사설 토토 : 문서 : 9.3 : 전문 검색자세한 내용). 정렬 및 중복 제거가 수행됩니다. 다음 예와 같이 입력 중에 자동으로:

SELECT '뚱뚱한 고양이가 매트 위에 앉아 살찐 쥐를 먹었습니다'::tsVector;
                      ts벡터
---------------------------------------
 'a' 'and' 'ate' 'cat' 'fat' 'mat' 'on' 'rat' 'sat'

공백이나 구두점이 포함된 어휘를 표현하려면, 따옴표로 묶으세요.

SELECT $$' ' 어휘에는 공백$$::ts벡터가 포함되어 있습니다.
                 ts벡터                  
------------------------------
 ' ' '포함' '어휘소' '공백' 'the'

(이 예에서는 달러로 묶인 문자열 리터럴을 사용하며 큰따옴표를 사용해야 하는 혼란을 피하기 위해 다음 것 리터럴 내에서.) 포함된 따옴표와 백슬래시는 다음과 같아야 합니다. 두 배로 늘었습니다:

SELECT $$'Joe''라는 어휘에는 인용문이 포함되어 있습니다$$::tsVector;
                    ts벡터                    
------------------------------------------------
 'Joe''s' 'a' '포함' '어휘소' '인용문' 'the'

선택적으로 정수위치될 수 있습니다 어휘소에 첨부됨:

SELECT 'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12'::tsVector;
                                  ts벡터
------------------------------------------------------------------
 'a':1,6,10 '및':8 'ate':9 'cat':3 'fat':2,11 'mat':7 'on':5 'rat':12 'sat':4

위치는 일반적으로 소스 단어의 위치를 나타냅니다. 문서. 위치 정보는 다음 용도로 사용될 수 있습니다.근접 순위. 위치 값의 범위는 1입니다. 16383으로; 더 큰 숫자는 자동으로 16383으로 설정됩니다. 중복 동일한 어휘의 위치는 삭제됩니다.

위치가 있는 어휘는 다음으로 추가로 라벨을 붙일 수 있습니다.무게, 다음과 같습니다.A, B, C또는D. D은 기본값이므로 표시되지 않습니다. 출력:

SELECT 'a:1A 지방:2B,4C 고양이:5D'::ts벡터;
          ts벡터          
---------------
 'a':1A '고양이':5 '지방':2B,4C

가중치는 일반적으로 문서 구조를 반영하는 데 사용됩니다. 예를 들어 제목 단어를 본문 단어와 다르게 표시합니다. 텍스트 검색 순위 기능은 다른 체중 표시.

다음을 이해하는 것이 중요합니다.ts벡터토토 베이 자체는 어떤 작업도 수행하지 않습니다. 정규화; 주어진 단어가 정규화되었다고 가정합니다. 응용 프로그램에 적합하게. 예를 들어,

'살찐 쥐'를 선택하세요::tsVector;
      ts벡터      
-------
 '뚱뚱한' '쥐' '그'

대부분의 영어 텍스트 검색 응용프로그램에서 위의 단어는 정규화되지 않은 것으로 간주되지만ts벡터상관없어요. 원시 문서 텍스트는 일반적으로 통과하다to_ts벡터에 검색에 적합하게 단어를 정규화합니다.

SELECT to_tsVector('english', 'The Fat Rats');
   to_ts벡터   
-----------------
 '지방':2 '쥐':3

다시, 참조사설 토토 : 문서 : 9.3 : 전문 검색더 보기 자세히.

8.11.2. tsquery

A tsquery값은 다음과 같은 어휘를 저장합니다. 부울 연산자를 존중하여 검색하고 결합합니다.&(그리고),|(OR) 및!(아닙니다). 괄호를 사용할 수 있습니다. 연산자 그룹화를 시행하려면:

SELECT '지방 및 쥐'::tsquery;
    쿼리    
---------------
 '뚱뚱하다'와 '쥐'

SELECT '지방 & (쥐 | 고양이)'::tsquery;
          쿼리          
--------------
 '지방' & ( '쥐' | '고양이' )

SELECT '지방 & 쥐 & ! 고양이'::tsquery;
        쿼리         
-----------
 '뚱뚱하다' & '쥐' & !'고양이'

괄호가 없으면,!(아님) 가장 단단하게 결합되며&(AND) 바인드 보다 더 단단하게|(또는).

선택적으로 a의 어휘소tsquery될 수 있습니다 하나 이상의 중량 문자로 라벨이 지정되어 있습니다. 일치만ts벡터일치하는 어휘소 가중치:

SELECT 'fat:ab & cat'::tsquery;
    쿼리
------------------
 '지방':AB & '고양이'

또한 a의 어휘소tsquery라벨 지정 가능 와 함께*접두사 일치를 지정하려면:

SELECT 'super:*'::tsquery;
  쿼리  
-----------
 '슈퍼':*

이 쿼리는 다음의 모든 단어와 일치합니다.ts벡터다음으로 시작하는"슈퍼". 접두사는 먼저 처리됩니다. 텍스트 검색 구성. 이는 이 비교가 다음을 반환함을 의미합니다. 사실:

SELECT to_tsVector( '대학원' ) @@ to_tsquery( 'postgres:*' );
 ?열? 
----------
 티
(1행)

왜냐하면포스트그레어간으로 이어짐postgr:

SELECT to_tsquery('postgres:*');
 to_tsquery 
------------
 '포스트그':*
(1행)

그러면 일치합니다대학원.

어휘에 대한 인용 규칙은 이전에 설명한 것과 동일합니다 어휘의 경우ts벡터; 그리고, 마찬가지로ts벡터, 필요한 단어 정규화 로 변환하기 전에 완료해야 합니다.tsquery토토 베이.to_tsquery함수는 이러한 정규화를 수행하는 데 편리합니다.

SELECT to_tsquery('Fat:ab & 고양이');
    to_tsquery    
------------------
 '지방':AB & '고양이'