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

12.2. 테이블 및 범퍼카 토토

이전 섹션의 예제는 단순한 상수 문자열을 사용하여 전체 텍스트 매칭을 보여주었습니다. 이 섹션은 선택적으로 인덱스를 사용하여 테이블 데이터를 검색하는 방법을 보여줍니다.

12.2.1. 테이블 검색

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

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

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

위의 쿼리는를 지정합니다.영어구성을 사용하여 문자열을 구문 분석하고 정상화해야합니다. 또는 구성 매개 변수를 생략 할 수 있습니다.

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

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

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

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

명확성을 위해 우리는를 생략했습니다.Coalesce함수를 포함하는 행을 찾는 데 필요한 함수 호출null두 필드 중 하나에서.

이러한 쿼리는 범퍼카 토토없이 작동하지만 대부분의 애플리케이션은 때때로 임시 검색을 제외 하고이 접근 방식이 너무 느리게 발견됩니다. 텍스트 검색의 실제 사용은 일반적으로 범퍼카 토토 생성이 필요합니다.

12.2.2. 범퍼카 토토 생성

우리는 a를 만들 수 있습니다.index (PostgreSQL : 문서 : 9.6 : 진과 요트 스포츠 토토 유형) 텍스트 검색 속도를 높이려면 :

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

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

|to_tsvector위의 범퍼카 토토에 사용되었으며, 2- 연락 버전을 사용하는 쿼리 참조 만to_tsvector동일한 구성 이름을 사용하면 해당 범퍼카 토토를 사용합니다. 즉,where to_tsvector ( 'English', Body) @@ 'a & b'색인을 사용할 수 있지만where to_tsvector (body) @@ 'a & b'할 수 없습니다. 이렇게하면 범퍼카 토토 항목을 생성하는 데 사용되는 동일한 구성으로 만 범퍼카 토토가 사용됩니다.

구성 이름이 다른 열로 지정되는 더 복잡한 표현식 범퍼카 토토를 설정할 수 있습니다 (예 :.

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

여기서config_name의 열입니다.pgweb테이블. 이를 통해 각 인덱스 항목에 사용 된 구성을 기록하면서 동일한 인덱스에서 혼합 구성이 가능합니다. 예를 들어, 문서 컬렉션에 다른 언어로 문서가 포함 된 경우에 유용합니다. 다시, 인덱스를 사용하기위한 쿼리는 일치하도록 표현되어야합니다 (예 :where to_tsvector (config_name, body) @@ 'a & b'.

범퍼카 토토는 열을 연결할 수 있습니다 :

gin을 사용하여 pgweb에서 인덱스 pgweb_idx 생성 (to_tsvector ( 'earl

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

ALTER TABLE PGWEEB 열 ADD TEXTERCHELE_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표현,를 유지하려면 트리거를 만들어야합니다TSVECTOR언제든지 열 전류제목또는Body변경.섹션 12.4.3그렇게하는 방법을 설명합니다.

표현식 범퍼카 토토에 대한 별도의 열 접근법의 한 가지 장점은 범퍼카 토토를 사용하기 위해 쿼리의 텍스트 검색 구성을 명시 적으로 지정할 필요가 없다는 것입니다. 위의 예에서 볼 수 있듯이 쿼리는에 의존 할 수 있습니다.default_text_search_config. 또 다른 장점은 검색이 더 빨라질 것이라는 점입니다.to_tsvector범퍼카 토토 일치를 확인하기위한 호출. (이것은 GIN 지수보다 GIST 지수를 사용할 때 더 중요합니다. 참조PostgreSQL : 문서 : 9.6 : 진과 요트 스포츠 토토 유형.) 표현식-범퍼카 토토 접근법은 설정하기가 더 간단하지만 이후로 디스크 공간이 필요합니다.TSVECTOR표현은 명시 적으로 저장되지 않았습니다.