전체 텍토토 베이 검색을 구현하려면 기능이 있어야합니다.TSVECTOR문서 및 A에서tsquery사용자 쿼리에서. 또한 우리는 필요합니다PostgreSQL지원을 제공합니다
postgresql제공to_tsvector
tsvector데이터 유형.
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)가 상담되며,이 목록은 다음에 따라 다를 수 있습니다.인식토큰은 하나 이상을 방출합니다lexemes쥐rat사전 중 하나 때문입니다쥐israt. 어떤 단어는단어 중지(섹션), 이로 인해 발생하면 무시됩니다.a,on,it. 목록에 사전이없는 경우-실제로 사전이 없기 때문입니다공간), 공간 토큰은 결코 색인되지 않습니다. 그만큼PostgreSQL : 문서 : 9.0 : 토토 예). 그것영어영어
함수setweight
할 수 있습니다TSVECTOR주어진weighta,B,C또는d. 이것은 일반적으로 항목을 표시하는 데 사용됩니다
왜냐하면to_tsvector
(NULL) 복귀null,Coalesce
필드가 null이 될 때마다. 권장 방법은 다음과 같습니다TSVECTOR구조화 된
업데이트 tt set ti =
여기서 우리가 사용했습니다setweight
TOTSVECTOR그리고 라벨이 붙은 병합TSVECTORtsvector연결 연산자||. (섹션이 작업에 대한 세부 정보를 제공합니다.)
postgresql제공to_tsquery
andPlainto_tsquery
변환 용 atsquery데이터 유형.to_tsquery
더 많은 액세스를 제공합니다Plainto_tsquery
,
to_tsquery ([ config RegConfig,]QueryText 텍토토 베이) 반환tsquery
to_tsquery
a 생성tsquery값QueryText, 단일로 구성되어야합니다&(및),|(또는) 및!(아님). 이 운영자는 될 수 있습니다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');
여기, 모든 입력 구두점은 공간으로 폐기되었습니다.
순위는 관련 문서가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각 일치하는 문서의
검색 결과를 제시하려면 각각의 일부를 보여주는 것이 이상적입니다.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_HEADLINE
forEvery일치SQL하위 쿼리가 도움이 될 수 있습니다.
id, ts_headline (body, q), 순위를 선택하십시오