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

12.3. 텍토토 베이 검색 제어

전체 텍토토 베이 검색을 구현하려면 기능이 있어야합니다.TSVECTOR문서 및 A에서tsquery사용자 쿼리에서. 또한 우리는 필요합니다PostgreSQL지원을 제공합니다

12.3.1. 구문 분석

postgresql제공to_tsvectortsvector데이터 유형.

to_tsvector ([ config RegConfig,]문서 텍토토 베이) 반환tsvector

to_tsvector텍토토 베이를 구문 분석합니다TSVECTOR

select to_tsvector ( '영어', '뚱뚱한 고양이는 매트에 앉아있었습니다 - 뚱뚱한 쥐를 먹었습니다.);

위의 예에서 결과113PostgreSQL : 문서 : 9.0 : 텍토토 베이 검색 제어53단어가 포함되어 있지 않습니다a,on또는it, 단어rat및 문장 부호-무시되었습니다.

theto_tsvector함수토토 PostgreSQL : 문서 : 9.0 : Dictionaries)가 상담되며,이 목록은 다음에 따라 다를 수 있습니다.인식토큰은 하나 이상을 방출합니다lexemesrat사전 중 하나 때문입니다israt. 어떤 단어는단어 중지(섹션), 이로 인해 발생하면 무시됩니다.a,on,it. 목록에 사전이없는 경우-실제로 사전이 없기 때문입니다공간), 공간 토큰은 결코 색인되지 않습니다. 그만큼PostgreSQL : 문서 : 9.0 : 토토 예). 그것영어영어

함수setweight할 수 있습니다TSVECTOR주어진weighta,B,C또는d. 이것은 일반적으로 항목을 표시하는 데 사용됩니다

왜냐하면to_tsvector(NULL) 복귀null,Coalesce필드가 null이 될 때마다. 권장 방법은 다음과 같습니다TSVECTOR구조화 된

업데이트 tt set ti =

여기서 우리가 사용했습니다setweightTOTSVECTOR그리고 라벨이 붙은 병합TSVECTORtsvector연결 연산자||. (섹션이 작업에 대한 세부 정보를 제공합니다.)

12.3.2. 구문 분석 쿼리

postgresql제공to_tsqueryandPlainto_tsquery변환 용 atsquery데이터 유형.to_tsquery더 많은 액세스를 제공합니다Plainto_tsquery,

to_tsquery ([ config RegConfig,]QueryText 텍토토 베이) 반환tsquery

to_tsquerya 생성tsqueryQueryText, 단일로 구성되어야합니다&(및),|(또는) 및!(아님). 이 운영자는 될 수 있습니다to_tsquery이미 따라야합니다tsquery입력, ASPostgreSQL : 문서 : 9.0 : 스포츠 토토 사이트 검색 스포츠 토토 사이트. 차이점은 기본적으로tsquery입력 토큰을 액면가로 가져옵니다.TO_TSQUERY각 토큰을 정상화합니다

select to_tsquery ( '영어', '& fat & rats');

BASIC에서와 같이tsquery입력, 무게 (들)TSVECTOR그 체중의 렉시 메스. 을 위한

select to_tsquery ( '영어', '지방 | 쥐 : ab');

또한*lexeme에 첨부 할 수 있습니다

select to_tsquery ( 'supern :*a & star : a*b');

그러한 Lexeme은 a의 단어와 일치합니다.tsvector주어진 문자열로 시작합니다.

to_tsquery수락 할 수도 있습니다Supernovae Stars : SN:

select to_tsquery ( '' 'Supernovae Stars' '&! crab');

따옴표없이to_tsquery분리되지 않은 토큰에 대한 구문 오류가 발생합니다.

Plainto_tsquery ([ config RegConfig,]QueryText 텍토토 베이) 반환tsquery

plainto_tsquery변환QueryTexttoTSQUERY. 텍토토 베이는 구문 분석됩니다to_tsvector, 그런 다음&(및) 부울 연산자가 삽입됩니다

예 :

plainto_tsquery ( '영어', '뚱뚱한 쥐');

참고Plainto_tsquery부울 연산자, 체중 레이블 또는 또는

Plainto_tsquery ( '영어', '지방 및 쥐 : C');

여기, 모든 입력 구두점은 공간으로 폐기되었습니다.

12.3.3. 순위 검색 결과

순위는 관련 문서가PostgreSQL두 개의 사전 정의 된 순위를 제공합니다

현재 사용 가능한 두 순위 기능은 다음과 같습니다.

TS_RANK ([ 웨이트 float4 [],]Vector TSVECTOR,쿼리 tsquery[,정규화 정수 ]) 반환float4

표준 순위 기능.

TS_RANK_CD ([ 웨이트 float4 [],]Vector TSVECTOR,Query TSQUERY[,정규화 Integer ]) returnsfloat4

이 함수는를 계산합니다.표지지정된 문서 벡터에 대한 순위 및

이 기능은 위치 정보가 필요합니다"토토 베이리핑" TSVECTOR값 - 항상 0을 반환합니다.

이 기능 모두 선택 사항웨이트인수는 능력을 제공합니다

D- 웨이트, C- 가이트, B- 웨이트, A- 가이트

NO웨이트제공됩니다.

0.1, 0.2, 0.4, 1.0

일반적으로 가중치는 특수 영역에서 단어를 표시하는 데 사용됩니다.

더 긴 문서는정규화옵션|(예 :2 | 4).

  • 0 (기본값)은 문서 길이를 무시합니다

  • 1은 순위를 1 + 문서의 로그로 나눕니다.

  • 2 문서 길이로 순위를 나눕니다

  • 4 순위를 평균 고조파 거리로 나눕니다.TS_RANK_CD)

  • 8 순위를 고유 한 단어의 수로 나눕니다.

  • 16 순위를 1 + 숫자의 로그를 나눕니다.

  • 32 자체로 순위를 나눕니다 + 1

둘 이상의 플래그 비트가 지정되면 변환

순위 함수는 그렇지 않다는 점에 유의해야합니다.RANK/(RANK+1))는 모든 순위를 확장하기 위해 적용 할 수 있습니다

여기에 가장 높은 순위 만 선택하는 예가 있습니다.

계급을 선택하여 TS_RANK_CD (TEXTSEARCH, QUERY)를 순위로 선택합니다

이것은 정규화 된 순위를 사용하는 것과 동일한 예입니다 :

계급 선택, TS_RANK_CD (TEXTSEARCH, QUERY, 32/ * RANK/(RANK+1) */)

순위는 컨설팅이 필요하기 때문에 비용이 많이들 수 있습니다TSVECTOR각 일치하는 문서의

12.3.4. 결과 강조

검색 결과를 제시하려면 각각의 일부를 보여주는 것이 이상적입니다.PostgreSQL제공 aTS_HEADLINE

ts_headline ([ config RegConfig,]문서 텍토토 베이,쿼리 TSQUERY[,옵션 텍토토 베이 ]) 반환텍토토 베이

TS_HEADLINE문서를 수락합니다config; 만약에config생략,default_text_search_config구성입니다

IF an옵션문자열입니다옵션​​=value쌍.

  • Startsel,Stopsel: DILIMIT의 문자열

  • maxwords,minwords:이 숫자를 결정합니다

  • Shortword:이 길이의 단어

  • 하이라이트: 부울 플래그; 만약에true전체 문서가 있습니다

  • maxfragments: 최대 수maxwords그리고 길이의 단어Shortword이하는 시작시 삭제됩니다minwords문서에서

  • FragmentDelimiter: 더 많은 경우

지정되지 않은 옵션은 이러한 기본값을받습니다 :

startsel = <b, stopsel = </b,

예 :

ts_headline ( '영어',

TS_HEADLINE원본을 사용합니다TSVECTOR요약TS_HEADLINEforEvery일치SQL하위 쿼리가 도움이 될 수 있습니다.

id, ts_headline (body, q), 순위를 선택하십시오