이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 12.2. 테이블 및 토토 결과버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

12.2. 테이블 및 토토 캔

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

12.2.2. 인덱스 생성

우리는 만들 수 있습니다색인(섹션 12.9) 텍스트 검색 속도를 높이기 위해:

GIN을 사용하여 pgweb에서 pgweb_idx 인덱스 생성 (to_tsVector('english', body));

다음의 2인수 버전에 주목하세요.to_tsVector사용됩니다. 표현식 인덱스에서는 구성 이름을 지정하는 텍스트 검색 함수만 사용할 수 있습니다(사설 토토 사이트 : 문서 : 10 : 11.7. 표현에 대한 색인). 이는 인덱스 내용이 다음의 영향을 받지 않아야 하기 때문입니다.default_text_search_config. 영향을 받은 경우 다른 항목에 다음 항목이 포함될 수 있으므로 색인 내용이 일관되지 않을 수 있습니다.ts벡터s는 서로 다른 텍스트 검색 구성으로 생성되었으며 어느 것이 어느 것인지 추측할 방법이 없습니다. 이러한 인덱스를 올바르게 덤프하고 복원하는 것은 불가능합니다.

다음의 두 인수 버전 때문에to_tsVector위 인덱스에서 사용되었으며 2개의 인수 버전을 사용하는 쿼리 참조만 사용되었습니다.to_tsVector동일한 구성 이름을 사용하면 해당 색인을 사용합니다. 즉,어디에서 to_tsVector('english', body) @@ 'a & b'색인을 사용할 수 있지만어디에서 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 인덱스 생성 (to_tsVector('english', title || ' ' || body));

또 다른 접근 방식은 별도의 계정을 생성하는 것입니다.ts벡터출력을 저장할 열to_ts벡터. 이 예는 다음을 연결한 것입니다.제목그리고, 사용합체다른 필드가 색인화될 때 한 필드가 계속 색인화되도록 보장하기 위해NULL:

ALTER TABLE pgweb ADD COLUMN textsearchable_index_col tsVector;
업데이트 pgweb SET textsearchable_index_col =
     to_tsVector('english', coalesce(title,'') || ' ' || coalesce(body,''));

그런 다음 우리는 다음을 만듭니다검색 속도를 높이는 색인:

GIN(textsearchable_index_col)을 사용하여 pgweb에서 textsearch_idx 인덱스 생성;

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

제목 선택
pgweb에서
WHERE textsearchable_index_col @@ to_tsquery('생성 및 테이블')
ORDER BY last_mod_date DESC
10개 제한;

별도의 열을 사용하여 저장하는 경우ts벡터표현을 유지하려면 트리거를 생성해야 합니다.ts벡터언제든지 현재 열제목또는변경사항.섹션 12.4.3그 방법을 설명합니다.

식 인덱스에 비해 별도 열 접근 방식의 한 가지 장점은 인덱스를 사용하기 위해 쿼리에서 텍스트 검색 구성을 명시적으로 지정할 필요가 없다는 것입니다. 위의 예에서 볼 수 있듯이 쿼리는 다음에 따라 달라질 수 있습니다.default_text_search_config. 또 다른 장점은 다시 실행할 필요가 없기 때문에 검색이 더 빨라진다는 것입니다.to_tsVector토토 캔 일치를 확인하기 위해 호출합니다. (이것은 GIN 토토 캔보다 GiST 토토 캔를 사용할 때 더 중요합니다. 참조PostgreSQL : 문서 : 10 : 12.9. 텍스트 검색을위한 우선 사설 토토 유형.) 그러나 표현식 인덱스 접근 방식은 설정이 더 간단하고 다음과 같은 방식으로 디스크 공간이 덜 필요합니다.ts벡터표현이 명시적으로 저장되지 않았습니다.