이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 8.11. 텍스트 토토 베이 유형버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

8.11. 토토 베이 검색 유형

PostgreSQL두 가지 데이터를 제공합니다 전체 텍스트 검색을 지원하도록 설계된 유형은 자연 언어 모음을 통한 검색 활동문서가장 잘 어울리는 것을 찾으십시오 에이쿼리. 그만큼TSVECTOR유형은 최적화 된 양식의 문서를 나타냅니다 텍스트 검색; 그만큼tsquery비슷하게 입력하십시오 텍스트 쿼리를 나타냅니다.사설 토토 : 문서 : 9.3 : 전문 검색이 시설에 대한 자세한 설명을 제공하고섹션 9.13관련을 요약합니다 기능 및 운영자.

8.11.1. TSVECTOR

atsvector값은 정렬 된 목록입니다 별개의lexemes정규화다른 병합 같은 단어의 변형 (참조사설 토토 : 문서 : 9.3 : 전문 검색자세한 내용). 정렬 및 중복 제거가 수행됩니다 이 예에서 볼 수 있듯이 입력 중에 자동으로 :

'뚱뚱한 고양이가 매트에 앉아 뚱뚱한 쥐를 먹었다':: tsvector;
                      tsvector
-----------------------------------------------------------
 'a' '및' 'ate' 'cat' 'fat' 'mat' 'on' '쥐' 'sat'

whitespace 또는 구두점을 포함하는 Lexemes를 나타내려면, 인용문으로 둘러싸여 :

선택 $$ lexeme '' '공백이 포함되어 $$ :: tsvector;
                 tsvector                  
---------------------------------------------------
 `` ''lexeme '' '공간'을 포함합니다.

다음은 인용 자국을 두 배로 늘려야한다는 혼란을 피하기 위해 리터럴 내에서.) 내장 된 따옴표와 백 슬래시가 있어야합니다 두 배 :

선택 $$ lexeme 'joe'의 '' '는 인용문 $$ :: tsvector;
                    tsvector                    
------------------------------------------------
 'Joe'의 ''a ''는``lexeme ''인용 '' '을 포함합니다.

선택적으로, 정수위치할 수 있습니다 Lexemes에 첨부 :

선택 'A : 1 FAT : 2 CAT : 3 SAT : 4 ON : 5 A : 6 MAT : 7 및 : 8 ATE : 9 A : 10 FAT : 11 RAT : 12':: TSVECTOR;
                                  tsvector
---------------------------------------------------------------------------------------------------------------------------------------------------------.
 'a': 1,6,10 '및': 8 'ate': 9 '고양이': 3 '지방': 2,11 'mat': 7 'on': 5 '쥐': 12 'sat': 4

위치는 일반적으로 소스 단어의 위치를 ​​나타냅니다. 문서. 위치 정보를 사용할 수 있습니다근접 순위. 위치 값은 1입니다 16383; 더 큰 숫자는 16383으로 조용히 설정됩니다 동일한 Lexeme의 위치는 폐기됩니다.

위치가있는 lexemes는 더 이상 레이블을 지정할 수 있습니다weighta, B, C또는d. d는 기본값이므로 표시되지 않습니다 산출:

선택 'A : 1A FAT : 2B, 4C CAT : 5D':: TSVECTOR;
          tsvector          
----------------------------
 'a': 1a 'cat': 5 ​​'fat': 2b, 4c

무게는 일반적으로 문서 구조를 반영하는 데 사용됩니다 제목 단어를 신체 단어와 다르게 표시하는 예. 텍스트 검색 순위 기능은 다른 우선 순위를 지정할 수 있습니다 다른 무게 마커.

TSVECTOR타입 자체는 수행하지 않습니다 표준화; 주어진 단어가 정규화되었다고 가정합니다 응용 프로그램에 적절하게. 예를 들어,

'The Fat Rats':: tsvector;
      tsvector      
-------------------
 '지방' '쥐' '

대부분의 영어 토토 베이 검색 응용 프로그램의 경우 위의 단어 정상화되지 않은 것으로 간주되지만TSVECTOR신경 쓰지 않습니다. 원시 문서 텍스트는 일반적으로해야합니다 통과to_tsvectorTO 검색을 위해 단어를 적절하게 정상화하십시오.

select to_tsvector ( '영어', '뚱뚱한 쥐');
   to_tsvector   
------------------
 '지방': 2 '쥐': 3

다시 참조사설 토토 : 문서 : 9.3 : 전문 검색더 많은 것 세부 사항.

8.11.2. TSQUERY

aTSQUERY가치 저장 Lexemes 검색하고 부울 연산자를 기리는 것을 결합합니다&(및),|(또는) 및!(아님). 괄호를 사용할 수 있습니다 연산자 그룹화를 시행하려면 :

선택 'Fat & rat':: tsquery;
    tsquery    
-----------------
 '지방'& '쥐'

'fat & (rat | cat)':: tsquery;
          tsquery          
-------------------------------
 'fat'& ( 'rat'| 'cat')

'Fat & Rat &! 고양이 ':: tsquery;
        tsquery         
-------------------------
 'fat'& 'rat'&! 'cat'

괄호가 없으면!(아님) 가장 단단히 묶고&(및) 바인딩 보다 더 단단히|(또는).

선택적으로, lexemes inTSQUERY할 수 있습니다 하나 이상의 무게 문자로 표시되어 일치 전용tsvector일치하는 lexemes 웨이트 :

선택 'Fat : Ab & Cat':: tsquery;
    tsquery
-----------------
 '지방': AB & 'CAT'

또한, lexemes intsquery라벨을 붙일 수 있습니다 와 함께*접두사 매칭을 지정하려면 :

선택 'Super :*':: tsquery;
  tsquery  
----------
 '감독자':*

이 쿼리는 a의 모든 단어와 일치합니다.​​TSVECTOR"슈퍼". 접두사는 먼저 처리됩니다 토토 베이 검색 구성은이 비교가 반환되는 것을 의미합니다 진실:

select to_tsvector ( 'postgraduate') @@ to_tsquery ( 'postgres :*');
 ?열? 
---------
 티
(1 행)

왜냐하면PostgresPostgr:

select to_tsquery ( 'postgres :*');
 to_tsquery 
------------
 'postgr':*
(1 행)

그런 다음 일치대학원.

Lexemes에 대한 인용 규칙은 앞에서 설명한 것과 동일합니다. lexemes의 경우TSVECTOR; 그리고와 마찬가지로TSVECTOR, 필요한 단어의 정규화 로 변환하기 전에 수행해야합니다.TSQUERY타입. 그만큼to_tsquery함수는입니다 그러한 정규화를 수행하는 데 편리합니다 :

select to_tsquery ( 'fat : ab & cats');
    to_tsquery    
-----------------
 '지방': AB & 'CAT'