12.2. 테이블 및 토토 결과#

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

12.2.2. 인덱스 생성#

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

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

다음의 2인수 버전에 주목하세요.to_tsVector이 사용됩니다. 표현식 인덱스에서는 구성 이름을 지정하는 텍스트 검색 함수만 사용할 수 있습니다(PostgreSQL : 문서 : 17 : 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_tsVector. 이 열을 소스 데이터와 자동으로 최신 상태로 유지하려면 저장된 생성 열을 사용하세요. 이 예는 다음을 연결한 것입니다.제목그리고, 사용합체다른 필드가 색인화되어 있을 때 한 필드가 계속 색인화되도록 보장하기 위해NULL:

ALTER TABLE pgweb
    열 추가 textsearchable_index_col tsVector
               항상 생성됨 (to_tsVector('english', coalesce(title, '') || ' ' || coalesce(body, ''))) STORED;

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

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

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

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

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

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.