포스트그레SQL두 개의 데이터를 제공합니다 전체 텍스트 검색을 지원하도록 설계된 유형입니다. 자연어 모음을 검색하는 활동문서가장 적합한 것을 찾으려면 일치 a질의.ts벡터유형은 양식의 문서를 나타냅니다. 텍스트 검색에 최적화되었습니다.tsquery유형 마찬가지로 토토 캔 쿼리를 나타냅니다.12장자세한 설명 제공 이 시설의, 그리고PostgreSQL : 문서 : 9.1 : 텍롤 토토 검색 기능 및 연산자관련 함수 및 연산자를 요약합니다.
A ts벡터값은 정렬된 목록입니다. 별개의어휘는 다음과 같은 단어입니다. 이미정규화병합하다 같은 단어의 다른 변형(참조제12장자세한 내용). 정렬 및 중복 제거는 입력 중에 자동으로 수행됩니다. 이 예에 표시되어 있습니다:
SELECT '뚱뚱한 고양이가 매트 위에 앉아 살찐 쥐를 먹었습니다'::tsVector;
ts벡터
---------------------------------------
'a' 'and' 'ate' 'cat' 'fat' 'mat' 'on' 'rat' 'sat'
공백이나 구두점이 포함된 어휘를 나타내려면, 따옴표로 묶으세요.
SELECT $$' ' 어휘에는 공백$$::tsVector가 포함되어 있습니다.
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_tsVector단어를 정규화하기 위해
검색에 적합함:
SELECT to_tsVector('english', 'The Fat Rats');
to_ts벡터
-----------------
'지방':2 '쥐':3
다시, 참조스포츠 토토 베트맨 : 문서 : 9.1 : 전문 검색더 보기 자세히.
A tsquery값은 다음과 같은 어휘를 저장합니다. 부울 값을 존중하여 검색하고 결합합니다. 연산자&(그리고),|(OR) 및!(아님). 괄호를 사용하여 그룹화를 강제할 수 있습니다. 연산자:
SELECT '뚱뚱하고 쥐'::tsquery;
쿼리
---------------
'뚱뚱하다'와 '쥐'
SELECT '지방 & (쥐 | 고양이)'::tsquery;
쿼리
--------------
'지방' & ( '쥐' | '고양이' )
SELECT '지방 & 쥐 & ! 고양이'::tsquery;
쿼리
-----------
'뚱뚱하다' & '쥐' & !'고양이'
괄호가 없으면,!(NOT)은 가장 단단하게 결합되며&(AND)는 다음보다 더 단단히 결합합니다.|(또는).
선택적으로 a의 어휘소tsquery할 수 있다 하나 이상의 중량 문자로 라벨을 지정해야 합니다. 일치하는 항목만ts벡터어휘 일치하는 가중치:
SELECT 'fat:ab & cat'::tsquery;
쿼리
------------------
'지방':AB & '고양이'
또한 a의 어휘소tsquery될 수 있습니다 로 라벨이 지정됨*접두사 지정 일치:
SELECT 'super:*'::tsquery; 쿼리 ----------- '슈퍼':*
이 쿼리는 다음의 모든 단어와 일치합니다.ts벡터다음으로 시작하는"슈퍼". 접두사가 먼저 처리됩니다. 텍스트 토토 캔 구성으로, 이는 이 비교를 의미합니다. true를 반환합니다:
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 & '고양이'