전체 텍스트 검색을 구현하려면 다음을 수행하는 기능이 있어야 합니다. 생성하다ts벡터범퍼카 토토 및 a에서tsquery사용자 쿼리에서. 또한 우리는 유용한 순서로 결과를 반환하므로 다음을 수행하는 함수가 필요합니다. 쿼리와의 관련성을 기준으로 범퍼카 토토를 비교합니다. 결과를 멋지게 표시할 수 있는 것도 중요합니다.PostgreSQL다음을 지원합니다. 이 모든 기능을 제공합니다.
PostgreSQL제공
    기능to_tsVector용
    범퍼카 토토를로 변환ts벡터데이터 유형.
to_ts벡터([ 구성 regconfig, ] 범퍼카 토토 텍스트) 반환ts벡터
    to_ts벡터텍스트를 구문 분석합니다.
    범퍼카 토토를 토큰으로 만들고 토큰을 어휘소로 줄입니다.
    를 반환합니다.ts벡터다음을 나열합니다.
    범퍼카 토토에서의 위치와 함께 어휘. 는
    범퍼카 토토는 지정된 또는 기본값에 따라 처리됩니다.
    텍스트 검색 구성. 다음은 간단한 예입니다.
SELECT to_tsVector('english', '뚱뚱한 고양이가 매트 위에 앉았습니다. 살찐 쥐를 잡아먹었습니다.');
                  to_ts벡터
----------------------------------------
 'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4
    위의 예에서 우리는 결과를 볼 수 있습니다.ts벡터단어를 포함하지 않습니다a, 켜짐또는그것, 단어쥐되었다쥐및 구두점-무시되었습니다.
그to_ts벡터함수
    내부적으로 범퍼카 토토 텍스트를 분할하는 파서를 호출합니다.
    토큰을 만들고 각 토큰에 유형을 할당합니다. 각 토큰에 대해 목록
    사전 (스포츠 토토 PostgreSQL)이 참조되며, 목록은 다음에 따라 달라질 수 있습니다.
    토큰 유형. 최초의 사전인식토큰은 하나 이상을 방출합니다.
    정규화됨어휘표현하기 위해
    토큰. 예를 들어,쥐되었다쥐왜냐하면 사전 중 하나가
    그 단어를 인식했습니다.쥐은
    의 복수형쥐. 어떤 단어는
    으로 인식됨단어 중지 (섹션
    12.6.1), 발생 이후 무시됩니다.
    너무 자주 검색에 유용하지 않습니다. 우리의 예에서는 이러한
    이다a, 켜짐,
    그리고그것. 목록에 사전이 없는 경우
    토큰을 인식하면 무시됩니다. 이 예에서는
    구두점에 그런 일이 일어났습니다-사실 사전이 없기 때문입니다
    토큰 유형에 할당됨(공간
    기호), 이는 공간 토큰이 색인화되지 않음을 의미합니다. 는
    파서, 사전 및 토큰 유형 선택
    색인은 선택한 텍스트 검색 구성에 따라 결정됩니다.
    (PostgreSQL : 문서 : 8.3 : 토토 예). 그것
    동일한 구성으로 다양한 구성이 가능합니다.
    데이터베이스 및 사전 정의된 구성을 사용할 수 있습니다.
    다양한 언어. 이 예에서는 기본값을 사용했습니다.
    구성영어영어용
    언어.
함수설정중량될 수 있습니다
    a의 항목에 레이블을 지정하는 데 사용됩니다.ts벡터주어진 내용으로무게, 여기서 가중치는
    편지 중 하나A, B, C또는D. 이는 일반적으로 들어오는 항목을 표시하는 데 사용됩니다.
    제목이나 본문 등 범퍼카 토토의 다양한 부분에서.
    나중에 이 정보는 검색 순위에 사용될 수 있습니다.
    결과.
왜냐하면to_ts벡터(NULL)가 반환됩니다.NULL,
    사용하는 것이 좋습니다.합체필드가 null일 수 있는 경우. 추천하는 방법은 이렇습니다
    생성을 위해ts벡터구조화된
    범퍼카 토토:
업데이트 tt SET ti =
    setweight(to_tsVector(coalesce(title,'')), 'A') ||
    setweight(to_tsVector(coalesce(keyword,'')), 'B') ||
    setweight(to_tsVector(coalesce(abstract,'')), 'C') ||
    setweight(to_tsVector(coalesce(body,'')), 'D');
    여기서 우리는 사용했습니다설정중량에
    완성된 각 어휘의 출처에 라벨을 붙입니다.ts벡터, 그런 다음 라벨이 붙은를 병합했습니다.ts벡터값을 사용하는 값ts벡터연결 연산자||. (섹션
    12.4.1이 작업에 대한 세부정보를 제공합니다.)
PostgreSQL제공
    기능to_tsquery그리고plainto_tsquery변환용
    에 대한 쿼리tsquery데이터 유형.to_tsquery더 많은 것에 대한 액세스를 제공합니다.
    기능보다plainto_tsquery,
    그러나 입력에 대해서는 덜 관대합니다.
to_tsquery([ 구성 regconfig, ] 쿼리텍스트 텍스트) 반환tsquery
    to_tsquery생성tsquery값:쿼리텍스트, 단일로 구성되어야 함
    부울 연산자로 구분된 토큰&(그리고),|(OR) 및!(아님). 이러한 연산자는 다음과 같습니다.
    괄호를 사용하여 그룹화합니다. 즉,에 대한 입력은to_tsquery이미 팔로우해야 함
    일반 규칙tsquery입력, 다음과 같이
    설명됨PostgreSQL :. 차이점은 기본이지만tsquery입력은 토큰을 액면 그대로 받아들입니다.to_tsquery각 토큰을 정규화합니다.
    지정된 구성이나 기본 구성을 사용하여 어휘소에
    다음에 따라 불용어인 토큰을 폐기합니다.
    구성. 예를 들면:
SELECT to_tsquery('english', 'The & Fat & Rats');
  to_tsquery   
---------------
 '뚱뚱하다' & '쥐'
    기본과 동일tsquery입력, 가중치 일치하도록 제한하기 위해 각 어휘소에 첨부할 수 있습니다.ts벡터해당 가중치의 어휘소입니다. 에 대한 예:
SELECT to_tsquery('english', '뚱뚱한 | 쥐:AB');
    to_tsquery    
------------------
 '지방' | '쥐':AB
    to_tsquery또한 허용 가능
    작은따옴표로 묶인 문구. 이는 주로 다음과 같은 경우에 유용합니다.
    구성에는 트리거할 수 있는 동의어 사전이 포함되어 있습니다.
    그런 문구에. 아래 예에서 동의어 사전에는
    규칙초신성별 : sn:
SELECT to_tsquery('''초신성별'' & !게');
  to_tsquery
---------------
 'sn' & !'게'
    따옴표 없이,to_tsquery분리되지 않은 토큰에 대해 구문 오류가 발생합니다.
    AND 또는 OR 연산자로.
plainto_tsquery([ 구성 regconfig, ] 쿼리텍스트 텍스트) 반환tsquery
    plainto_tsquery변형하다
    서식 없는 텍스트쿼리텍스트에tsquery. 텍스트가 구문 분석되고
    다음과 같이 정규화되었습니다.to_ts벡터, 그러면&(AND) 부울 연산자가 사이에 삽입됩니다.
    살아남은 단어.
예:
SELECT plainto_tsquery('english', 'The Fat Rats');
 plainto_tsquery 
-----------------
 '뚱뚱하다' & '쥐'
    참고plainto_tsquery부울 연산자나 중량 라벨을 인식할 수 없습니다.
    입력:
SELECT plainto_tsquery('english', 'The Fat & Rats:C');
   plainto_tsquery   
--------
 '지방' & '쥐' & 'c'
    여기서 입력된 구두점은 모두 공백으로 폐기되었습니다. 기호.
순위는 범퍼카 토토가 범퍼카 토토와 얼마나 관련성이 있는지 측정하려고 시도합니다. 특정 쿼리를 사용하면 일치하는 항목이 많을 때 가장 많이 관련 항목이 먼저 표시될 수 있습니다.포스트그레SQL사전 정의된 순위 2개 제공 어휘, 근접성 및 구조적 정보; 즉, 그들은 얼마나 자주 검색어가 범퍼카 토토에 표시되는 정도, 검색어가 얼마나 가까이 있는지, 용어가 범퍼카 토토에 나와 있으며 해당 부분이 얼마나 중요한지 발생 장소를 범퍼카 토토로 기록하세요. 그러나 관련성의 개념은 모호하고 매우 애플리케이션별로 다릅니다. 다양한 응용 순위를 매기기 위해 추가 정보가 필요할 수 있습니다. 범퍼카 토토 수정 시간. 내장된 순위 기능은 예. 자신만의 순위 함수 및/또는 작성할 수 있습니다. 결과를 추가 요소와 결합하여 귀하의 요구 사항에 맞게 특정 요구 사항.
현재 사용 가능한 두 가지 순위 기능은 다음과 같습니다.
ts_rank([ 가중치 float4[], ] 벡터 ts벡터, 질의 tsquery [, 정규화 정수 ]) 반환float4
표준 순위 기능.
ts_rank_cd([ 가중치 float4[], ] 벡터 ts벡터, 질의 tsquery [, 정규화 정수 ]) 반환float4
이 함수는 다음을 계산합니다.표지 밀도주어진 범퍼카 토토 벡터에 대한 순위 및 Clarke, Cormack 및 Tudhope의 설명에 따른 쿼리 "1~3개 용어 쿼리에 대한 관련성 순위" 저널 "정보 처리 및 관리", 1999.
이 기능은 위치 정보가 필요합니다. 입력. 따라서 작동하지 않습니다."벗겨짐" ts벡터값 — 항상 0을 반환합니다.
이 두 기능 모두에 대해 선택 사항가중치인수는 다음 기능을 제공합니다. 단어 인스턴스가 어떻게 사용되는지에 따라 다소 무겁게 평가됩니다. 표시되어 있습니다. 가중치 배열은 가중치를 얼마나 부여할지 지정합니다. 각 단어 범주(순서대로):
D-가중치, C-가중치, B-가중치, A-가중치
아니면가중치제공되며, 그러면 다음 기본값이 사용됩니다.
{0.1, 0.2, 0.4, 1.0}
    일반적으로 가중치는 특수 영역의 단어를 표시하는 데 사용됩니다. 제목이나 초기 초록과 같은 범퍼카 토토의 내용을 그것들은 본문에 있는 단어들보다 다소 중요하게 취급될 수 있습니다. 범퍼카 토토 본문.
더 긴 범퍼카 토토는 다음을 포함할 가능성이 더 높기 때문에 쿼리 용어는 범퍼카 토토 크기를 고려하는 것이 합리적입니다. 예를 들어 5번의 검색 사례가 포함된 100단어 범퍼카 토토 아마도 천 단어로 된 범퍼카 토토보다 단어가 더 관련성이 높을 것입니다. 5개의 인스턴스가 있습니다. 두 순위 함수 모두 정수를 사용합니다.정규화옵션 범퍼카 토토 길이가 범퍼카 토토 길이에 영향을 미치는지 여부와 방법을 지정합니다. 순위. 정수 옵션은 여러 동작을 제어하므로 비트 마스크: 다음을 사용하여 하나 이상의 동작을 지정할 수 있습니다.|(예:2|4).
0(기본값)은 범퍼카 토토 길이를 무시합니다.
1은 순위를 1 + 범퍼카 토토의 로그로 나눕니다. 길이
2 순위를 범퍼카 토토 길이로 나눕니다.
4는 순위를 사이의 평균 고조파 거리로 나눕니다.
        범위(이것은 다음으로만 구현됩니다.ts_rank_cd)
8은 순위를 다음의 고유 단어 수로 나눕니다. 범퍼카 토토
16은 순위를 1 + 숫자의 로그로 나눕니다. 범퍼카 토토의 고유 단어 수
32는 순위 자체를 + 1로 나눕니다.
두 개 이상의 플래그 비트가 지정되면 변환은 나열된 순서대로 적용됩니다.
순위 기능은 중요하지 않습니다. 글로벌 정보를 사용하므로 이를 생성하는 것은 불가능합니다. 때때로 원하는 대로 1% 또는 100%로 공정한 정규화를 수행합니다. 정규화 옵션 32 (순위/(순위+1))를 적용하여 모든 순위를 확장할 수 있습니다. 0에서 1 사이의 범위로 들어가지만 물론 이것은 단지 미용적 변화; 검색 순서에는 영향을 미치지 않습니다. 결과.
다음은 가장 높은 순위의 10개만 선택하는 예입니다. 일치:
제목 선택, ts_rank_cd(텍스트 검색, 쿼리) AS 순위
FROM apod, to_tsquery('neutrino|(dark & Matter)') 쿼리
WHERE 쿼리 @@ 텍스트 검색
순위별로 주문 DESC LIMIT 10;
                     제목 |   순위
-------------------+----------
 태양 속의 중성미자 |      3.1
 Sudbury 중성미자 검출기 |      2.4
 은하계 암흑물질에 대한 마초적인 관점 |  2.01317
 뜨거운 가스와 암흑물질 |  1.91171
 처녀자리 클러스터: 고온 플라즈마 및 암흑 물질 |  1.90953
 태양 중성미자 래프팅 |      1.9
 NGC 4650A: 이상한 은하와 암흑 물질 |  1.85774
 뜨거운 가스와 암흑물질 |   1.6123
 우주 중성미자 얼음낚시 |      1.6
 약한 렌즈 효과는 우주를 왜곡합니다 | 0.818218
    이것은 정규화된 순위를 사용한 동일한 예입니다:
SELECT title, ts_rank_cd(textsearch, query, 32 /* 순위/(순위+1) */ ) AS 순위
FROM apod, to_tsquery('neutrino|(dark & Matter)') 쿼리
WHERE 쿼리 @@ 텍스트 검색
순위별로 주문 DESC LIMIT 10;
                     제목 |        순위
---------------------+-------------------
 태양 속의 중성미자 | 0.756097569485493
 Sudbury 중성미자 검출기 | 0.705882361190954
 은하계 암흑물질에 대한 마초적인 관점 | 0.668123210574724
 뜨거운 가스와 암흑물질 |  0.65655958650282
 처녀자리 클러스터: 고온 플라즈마 및 암흑 물질 | 0.656301290640973
 태양 중성미자 래프팅 | 0.655172410958162
 NGC 4650A: 이상한 은하와 암흑 물질 | 0.650072921219637
 뜨거운 가스와 암흑물질 | 0.617195790024749
 우주 중성미자 얼음낚시 | 0.615384618911517
 약한 렌즈 효과는 우주를 왜곡합니다 | 0.450010798361481
    순위는 컨설팅이 필요하기 때문에 비용이 많이 들 수 있습니다.ts벡터일치하는 각 범퍼카 토토의 I/O 바인딩될 수 있으므로 속도가 느립니다. 불행하게도 그것은 실용적인 쿼리가 자주 발생하므로 피하기가 거의 불가능합니다. 많은 수의 경기에서.
검색 결과를 표시하려면 각 결과의 일부를 표시하는 것이 이상적입니다.
    범퍼카 토토와 그것이 쿼리와 어떻게 관련되어 있는지. 보통 검색하면
    엔진은 표시된 검색으로 범퍼카 토토의 일부를 표시합니다.
    용어.PostgreSQL제공
    기능ts_headline그것
    이 기능을 구현합니다.
ts_headline([ 구성 regconfig, ] 범퍼카 토토 텍스트, 질의 tsquery [, 옵션 텍스트 ]) 반환텍스트
ts_headline범퍼카 토토를 수락합니다
    쿼리와 함께 범퍼카 토토에서 발췌한 내용을 반환합니다.
    쿼리의 어떤 용어가 강조 표시됩니다. 구성
    범퍼카 토토를 구문 분석하는 데 사용되는 것은 다음과 같이 지정할 수 있습니다.구성; 만일구성생략되었습니다.default_text_search_config구성은 다음과 같습니다
    사용되었습니다.
만약옵션문자열은 지정되면 쉼표로 구분된 하나의 목록으로 구성되어야 합니다. 더 많은옵션=값쌍. 사용 가능한 옵션은 다음과 같습니다.
StartSel, StopSel: 검색어가 포함된 문자열 범퍼카 토토에 나타나는 내용은 다음으로 구분되어야 합니다. 다른 발췌된 단어와 구별하십시오.
MaxWords, 최소단어: 이 숫자는 출력할 가장 긴 헤드라인과 가장 짧은 헤드라인입니다.
단어: 이 길이의 단어 이하의 내용은 헤드라인의 시작과 끝 부분에서 삭제됩니다. 기본값 3은 영어를 제거합니다. 기사.
하이라이트모두: 부울 플래그; 만일사실전체 범퍼카 토토는 강조 표시되었습니다.
지정되지 않은 옵션은 다음 기본값을 받습니다:
StartSel=<b, StopSel=</b, MaxWords=35, MinWords=15, ShortWord=3, 하이라이트All=FALSE
예:
SELECT ts_headline('english', '가장 일반적인 검색 유형
주어진 검색어가 포함된 모든 범퍼카 토토를 찾는 것입니다. 
그리고 유사한 순서대로 반환합니다.
query.', to_tsquery('쿼리 및 유사성'));
                        ts_headline                         
----------------------------------
 주어진 <b검색어</b 용어
 그리고 <b유사성</b 순서대로 반환합니다.
 <b쿼리</b.
SELECT ts_headline('english', '가장 일반적인 검색 유형
주어진 검색어가 포함된 모든 범퍼카 토토를 찾는 것입니다.
그리고 유사한 순서대로 반환합니다.
쿼리.',
  to_tsquery('쿼리 및 유사성'), 
  'StartSel = <, StopSel = ');
                      ts_headline                      
------------------------------------------
 주어진 <쿼리 용어
 <유사성 순서대로 반환합니다.
 <쿼리.
    ts_headline원본을 사용합니다
    범퍼카 토토(a가 아님)ts벡터요약해서 그렇습니다
    속도가 느릴 수 있으므로 주의해서 사용해야 합니다. 대표적인 실수는
    전화하다ts_headlinefor모든일치
    범퍼카 토토가 10개만 표시될 경우 범퍼카 토토입니다.SQL하위 쿼리가 도움이 될 수 있습니다.
    여기에 예가 있습니다:
SELECT id, ts_headline(body, q), 순위
FROM (SELECT id, body, q, ts_rank_cd(ti, q) AS 순위
      apod에서, to_tsquery('stars') q
      어디에서 @@q
      ORDER BY 순위 DESC LIMIT 10) AS foo;