이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 12.2. 테이블 및 토토 결과버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

12.2. 테이블 및 토토 핫

이전 섹션의 예제는 전체 텍스트를 설명했습니다 단순한 상수 줄을 사용하여 일치합니다. 이 섹션에서는 방법을 보여줍니다 테이블 데이터 검색, 선택적으로 인덱스를 사용합니다.

12.2.1. 테이블 검색

색인없이 전체 텍스트 검색을 수행 할 수 있습니다. 에이 인쇄하는 간단한 쿼리제목9965_10003친구inBody필드 IS :

제목을 선택하십시오
pgweb에서
TO_TSVECTOR ( '영어', 바디) @@ TO_TSQUERY ( 'English', 'Friend');

이것은 또한와 같은 관련 단어를 찾을 것입니다.친구친절한이후 이 모든 것이 동일한 정규화 된 lexeme로 축소됩니다.

위의 쿼리는를 지정합니다.영어구성을 사용하여 구문 분석하고 줄을 정규화하십시오. 또는 우리는 그것을 생략 할 수 있습니다 구성 매개 변수 :

제목을 선택하십시오
pgweb에서
where to_tsvector (body) @@ to_tsquery ( 'friend');

이 쿼리는에 의해 설정된 구성을 사용합니다.default_text_search_config.

더 복잡한 예는 가장 최근 10 개를 선택하는 것입니다. 포함 된 문서Createand테이블in제목또는Body:

제목을 선택하십시오
pgweb에서
where to_tsvector (title || ''|| body) @@ to_tsquery ( 'Create & Table')
Last_mod_date desc로 주문하십시오
제한 10;

명확성을 위해 우리는를 생략했습니다.Coalesce필요한 기능 호출 포함 된 행 찾기NULL중 하나에서 두 분야.

이 쿼리는 토토 핫없이 작동하지만 대부분은 작동합니다 응용 프로그램은이 접근법이 너무 느리게 발견 될 것입니다. 가끔 임시 검색. 일반적으로 텍스트 검색의 실제 사용 색인 생성이 필요합니다.

12.2.2. 토토 핫 생성

우리는 a를 만들 수 있습니다.gin색인 (섹션 12.9) 속도를 높이려면 텍스트 검색 :

gin (to_tsvector ( 'English', Body));를 사용하여 pgweb에서 pgweb_idx 생성 pgweb_idx 생성

2의 2- 관점 버전에 주목하십시오.to_tsvector사용됩니다. 텍스트 검색 기능 만 구성 이름을 지정하여 표현식 토토 핫에서 사용할 수 있습니다. (토토 캔 : 문서 : 9.3 : 표현식 색인). 이것은 토토 핫 내용은의 영향을받지 않아야하기 때문에default_text_search_config. 영향을 받으면 토토 핫 내용이 일치하지 않을 수 있습니다. 다른 항목에 포함될 수 있기 때문에tsvector다른 텍스트 검색으로 생성 된 것입니다 구성, 그리고 어느 것이 무엇인지 추측 할 방법이 없을 것입니다. 그러한 색인을 덤프하고 복원하는 것은 불가능합니다. 바르게.

의 두 가지 반대 버전이기 때문에to_tsvector위의 지수에 사용되었으며 a 2의 2- 학습 버전을 사용하는 쿼리 참조to_tsvector동일한 구성 이름이있는 것입니다 그 지수를 사용하십시오. 즉,여기서 to_tsvector ( '영어', 바디) @@ 'a & b'토토 핫를 사용할 수 있습니다. 하지만where to_tsvector (body) @@ 'a & b'할 수 없습니다. 이렇게하면 토토 핫가 동일하게 만 사용됩니다. 토토 핫 항목을 작성하는 데 사용되는 구성.

더 복잡한 표현 토토 핫를 설정할 수 있습니다. 구성 이름은 다른 열에서 지정됩니다 (예 :

gin을 사용하여 pgweb에서 인덱스 pgweb_idx 생성 (to_tsvector (config_name, body));

여기서config_name의 열입니다.PGWEB테이블. 이것은 혼합을 허용합니다 기록하는 동안 동일한 인덱스의 구성 각 인덱스 항목에 구성이 사용되었습니다. 이것은 유용 할 것입니다. 예를 들어, 문서 수집에 문서가 포함 된 경우 다른 언어. 다시, 인덱스를 사용하기위한 쿼리 일치하는 문구 (예 :.여기서 to_tsvector (config_name, body) @@ 'a & b'.

토토 핫는 열을 연결할 수 있습니다 :

gin을 사용하여 pgweb에서 인덱스 pgweb_idx 생성

또 다른 접근 방식은 별도를 만드는 것입니다TSVECTOR출력을 유지하려면 열to_tsvector. 이 예제는의 연결입니다.제목andBody, 사용Coalesce다른 사람은 여전히 ​​색인이 표시됩니다NULL:

ALTER TABLE PGWEEB 열 추가 텍스트 검색 가능한_index_col tsvector;
pgweb set textsearchable_index_col = 업데이트
     to_tsvector ( '영어', Coalesce (title, '') || ''|| Coalesce (Body, '');

그러면 우리는 a를 만듭니다.색인으로 검색 속도를 높이십시오 :

gin (textsearchable_index_col)을 사용하여 pgweb에서 index textsearch_idx 만들기;

이제 우리는 빠른 전체 텍스트 검색을 수행 할 준비가되었습니다 :

제목을 선택하십시오
pgweb에서
여기서 textsearchable_index_col @@ to_tsquery ( 'Create & Table')
Last_mod_date desc로 주문하십시오
제한 10;

별도의 열을 사용하여 저장할 때tsvector표현, a 유지하려는 트리거TSVECTOR열 전류 언제든지제목또는Body변경.섹션 12.4.3그렇게하는 방법을 설명합니다.

표현에 대한 별도의 열 접근의 한 가지 장점 색인은 텍스트를 명시 적으로 지정할 필요가 없다는 것입니다. 토토 핫를 사용하기 위해 쿼리의 검색 구성. 위의 예에서 볼 수 있듯이 쿼리는에 의존 할 수 있습니다.default_text_search_config. 또 다른 장점은 검색이 더 빠를 필요가 없기 때문에 더 빠를 것입니다. redoto_tsvector확인을 요청합니다 토토 핫 일치. (이것은 GIST 지수를 사용할 때 더 중요합니다. 진 지수; 보다PostgreSQL : 문서 : 9.3 : 토토 사이트 추천 and Gin Index 유형.) Expression-Index 접근법은 설정하기가 간단합니다. 그러나 이후로 디스크 공간이 적습니다.TSVECTOR표현은 명시 적으로 저장되지 않습니다.