지원되는 버전 :현재 (17) /16 / 15 / 14 / 13
개발 버전 :Devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
이 토토 커뮤니티는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

12.1. 소개

전체 텍스트 검색 (또는 Just텍스트 찾다) 자연 언어를 식별하는 능력을 제공합니다토토 커뮤니티만족쿼리, 그리고 선택적으로 관련성에 따라 정렬합니다 쿼리에.쿼리 용어순서대로 반환유사성쿼리에. 개념쿼리and유사성매우 유연하며 특정 응용 프로그램에 의존합니다.쿼리세트로 단어와유사성주파수로 토토 커뮤니티의 쿼리 단어.

텍스트 검색 연산자는 수년간 데이터베이스에 존재했습니다.postgresqlhas~, ~*, 좋아요ilike연산자 텍스트 데이터 유형의 경우에는 많은 필수 속성이 부족합니다.

  • 영어조차도 언어 적 지원이 없습니다. 정기적인만족and만족. 포함 된 토토 커뮤니티를 놓칠 수 있습니다만족, 아마도 검색 할 때 그들을 찾고 싶습니다만족. 사용할 수 있습니다또는여러 파생 양식을 검색하려면 이것은 지루하고 오류가 발생하기 쉽습니다 (일부 단어는 몇 가지를 가질 수 있습니다.

  • 검색 결과의 주문 (순위)을 제공하지 않습니다. 수천 명의 일치 할 때 효과가 없습니다

  • 색인 지원이 없기 때문에 느리게하는 경향이 있으므로 그들은 모든 검색에 대해 모든 토토 커뮤니티를 처리해야합니다.

전체 텍스트 인덱싱 토토 커뮤니티가 될 수 있습니다전처리그리고 인덱스가 저장되었습니다 나중에 빠른 검색.

  • 토토 커뮤니티를 구문 분석합니다 토큰. 다양한 클래스를 식별하는 것이 유용합니다postgresqla 사용파서이 단계를 수행하려면. 표준

  • 토큰 변환 Lexemes. lexeme은 토큰처럼 끈이지만정규화그래서 같은 단어의 다른 형태는 비슷하게 만들어집니다.s또는es영어). 이를 통해 검색을 찾을 수 있습니다단어 중지너무 흔한 단어는 검색에 쓸모가 없습니다.postgresql용도사전이 단계를 수행합니다. 다양한

  • 전처리 저장 검색에 최적화 된 토토 커뮤니티. 예를 들어, 각각근접 순위더 포함"밀도"영역 쿼리 단어는 산란 된 것보다 높은 순위가 할당됩니다.

사전은 토큰의 방법을 세밀하게 제어 할 수 있습니다 정규화.

  • 색인을 작성해서는 안되는 중지 단어 정의.

  • 동의어를 하나의 단어로 맵핑하여Ispell.

  • 동의어 사전을 사용하여 한 단어에 대한 문구를 맵핑하십시오.

  • 단어의 다른 변형을 표준 형태로 매핑 사용 사용Ispell사전.

  • 단어의 다른 변형을 표준 형태로 매핑 사용SnowballStemmer 규칙.

데이터 유형tsvector가 제공됩니다 유형과 함께 전처리 토토 커뮤니티 저장tsquery처리 된 쿼리를 나타내는 경우 (섹션 8.11). 많은 것이 있습니다섹션 9.13), 가장 중요한 그 중 매치 연산자@@우리는 소개섹션 12.1.2. 인덱스를 사용하여 전체 텍스트 검색을 가속화 할 수 있습니다 (섹션 12.9).

12.1.1. 토토 커뮤니티 란 무엇입니까?

A Document검색 단위입니다 전체 텍스트 검색 시스템에서;

내 검색의 경우postgresql, 토토 커뮤니티는 일반적으로 a입니다 데이터베이스 테이블 행 내 또는 아마도

제목을 선택하십시오

참고 :실제로,이 예에서 쿼리Coalesce익숙해 져야합니다 싱글 방지null속성 a를 일으킨다null결과 전체 토토 커뮤니티.

또 다른 가능성은 토토 커뮤니티를 간단한 텍스트로 저장하는 것입니다. 파일 시스템의 파일.postgresql. 또한 데이터베이스 내부의 모든 것을 유지하면 쉽게 액세스 할 수 있습니다

텍스트 검색 목적의 경우 각 토토 커뮤니티를 줄여야합니다. 전처리tsvector형식. 검색 및 순위는 전적으로에서 수행됩니다.tsvector토토 커뮤니티 표현 - 원본 텍스트는 토토 커뮤니티가있을 때만 검색해야합니다.tsvector토토 커뮤니티로서 물론 그것은 전체의 작품 일뿐입니다.

12.1.2. 기본 텍스트 일치

전체 텍스트 검색에서postgresql경기 연산자를 기반으로@@, 반환trueatsvector(토토 커뮤니티) 일치 atsquery(쿼리). 그것

'매트에 앉아 뚱뚱한 쥐를 먹었다':: tsvector @@ 'cat & rat':: tsquery; ?열?

위의 예에서 알 수 있듯이 Atsquery단지 원시 텍스트가 아니라tsvectoris. 에이tsquery검색어가 포함되어 있어야합니다 이미 정규화 된 Lexemes이며 여러 용어를 결합 할 수 있습니다섹션 8.11.)가 있습니다 기능to_tsqueryandPlainto_tsquery도움이됩니다 사용자가 작성한 텍스트를 적절한 것으로 변환 할 때tsquery, 예를 들어 단어가 나타나는 단어를 정규화하여 텍스트에서.to_tsvector

select to_tsvector ( 'Fat Cats Ate Fat Rats') @@ to_tsquery ( 'fat & rat'); ?열?

이 경기가로 작성되면 성공하지 못한다는 것을 관찰하십시오.

'지방 고양이는 지방 쥐를 먹었다':: tsvector @@ to_tsquery ( 'fat & rat'); ?열?

여기서 단어의 정규화가 없으므로발생합니다. A의 요소tsvector이미 가정 된 렉시스입니다 정규화, 그래서일치하지 않습니다rat.

the@@운영자도 지원텍스트입력, 명시 적 변환이 가능합니다 텍스트 문자열tsvector또는tsquery간단한 경우에 건너 뛸 수 있습니다. 사용 가능한 변형은 다음과 같습니다.

tsvector @@ tsquerytsquery @@ tsvector

우리가 이미 본 첫 번째 두 가지. 양식텍스트 @@ tsqueryto_tsvector (x) @@ y. 양식텍스트 @@ 텍스트to_tsvector (x) @@ plainto_tsquery (y).

12.1.3. 구성

위의 모든 간단한 텍스트 검색 예제입니다. 언급했듯이텍스트 검색 구성. postgresql많은 언어에 대한 사전 정의 된 구성과 함께 제공됩니다 자신만의 구성을 쉽게 만들 수 있습니다.PSQL's\ df명령이 사용 가능한 모든 구성을 표시합니다.)

설치 중에 적절한 구성이 선택됩니다 그리고default_text_search_config그에 따라 설정됩니다es. 같은 텍스트를 사용하는 경우es. 사용합니다데이터베이스 변경 ... 세트. 그렇지 않으면 설정할 수 있습니다default_text_search_config각각 세션.

구성에 의존하는 각 텍스트 검색 기능 선택 사항이 있습니다RegConfig인수 사용하는 구성을 명시 적으로 지정할 수 있습니다.default_text_search_config사용됩니다 이 주장이 생략 될 때만.

사용자 정의 텍스트 검색을보다 쉽게 ​​구축 할 수 있도록 구성, 구성은 더 간단하게 구성됩니다postgresql's 텍스트 검색 시설은 네 가지 유형의 유형을 제공합니다

  • 텍스트 검색 파서브레이크 토큰으로 토토 커뮤니티를 작성하고 각 토큰을 분류합니다 (예 :

  • 텍스트 검색 사전토큰을 정규화 된 형태로 변환하고 정지를 거부하십시오 단어.

  • 텍스트 검색 템플릿제공 사전의 기본 기능.

  • 텍스트 검색 구성사용할 파서와 사전 세트를 선택하십시오. 파서에서 생성 한 토큰을 정상화하십시오.

텍스트 검색 파서 및 템플릿은 저수준 C에서 구축됩니다. 기능;Contrib/영역postgresql분포.) 사전과 구성이 매개 변수화되고