이 스포츠 토토는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 토토 커뮤니티 : 17 : 12.1. 소개버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

12.1. 소개

전체 텍스트 검색(또는 그냥텍스트 검색)은 자연어 식별 기능을 제공합니다.스포츠 토토a를 만족시키는질의, 선택적으로 관련성을 기준으로 정렬합니다. 쿼리. 가장 일반적인 검색 유형은 모든 스포츠 토토를 찾는 것입니다. 주어진 내용을 포함하는검색어그리고 복귀 순서대로유사성에 쿼리. 의 개념질의그리고유사성매우 유연하며 다음에 의존합니다. 특정 응용 프로그램. 가장 간단한 검색이 고려됩니다.질의단어 집합으로유사성검색어의 빈도로 스포츠 토토.

텍스트 검색 연산자는 수년간 데이터베이스에 존재해 왔습니다.PostgreSQL있음~, ~*, 102PostgreSQL: 스포츠 토토: 9.3: 소개49좋아요연산자 텍스트 데이터 유형의 경우 필수 속성이 많이 부족합니다. 현대 정보 시스템에 필요한 사항:

  • 영어라도 언어 지원이 없습니다. 레귤러 표현은 쉽게 처리할 수 없기 때문에 충분하지 않습니다. 파생어(예:만족합니다그리고만족합니다. 다음과 같은 스포츠 토토를 놓칠 수도 있습니다. 포함만족합니다, 아마도 당신은 검색할 때 찾고 싶습니다.만족하다. 사용이 가능합니다또는여러 파생 형식을 검색하려면 다음과 같이 하세요. 지루하고 오류가 발생하기 쉽습니다(어떤 단어에는 수천 개가 포함될 수 있음). 파생 상품).

  • 그들은 검색 결과의 순서(순위)를 제공하지 않습니다. 수천 개의 일치하는 스포츠 토토가 있으면 효과가 없습니다. 찾았습니다.

  • 색인 지원이 없기 때문에 속도가 느린 경향이 있습니다. 검색할 때마다 모든 스포츠 토토를 처리해야 합니다.

전체 텍스트 색인을 사용하면 스포츠 토토를 다음과 같이 만들 수 있습니다.전처리됨및 다음에 대해 저장된 색인 나중에 빠른 검색. 전처리에는 다음이 포함됩니다.

  • 스포츠 토토를 구문 분석하는 중 토큰. 다양한 종류의 토큰을 식별하는 데 유용합니다. 예를 들어 숫자, 단어, 복잡한 단어, 이메일 주소 등 다르게 처리될 수 있습니다. 원칙적으로 토큰 클래스는 다음에 따라 달라집니다. 특정 용도에 적합하지만 대부분의 목적에 적합합니다. 사전 정의된 클래스 세트를 사용합니다.PostgreSQL사용파서이 단계를 수행합니다. 표준 파서는 제공되며 특정 요구에 맞게 사용자 정의 파서를 생성할 수 있습니다.

  • 토큰을 다음으로 변환 중 어휘. 어휘소는 토큰과 마찬가지로 문자열이지만 되었습니다.정규화그래서 다양한 형태의 같은 단어가 비슷하게 만들어졌습니다. 예를 들어 정규화는 거의 항상 대문자를 소문자로 접는 작업이 포함되며, 종종 접미사 제거(예:s또는es영어). 이를 통해 다음을 검색할 수 있습니다. 지루하게 모든 단어를 입력하지 않고도 동일한 단어의 다양한 형태를 찾을 수 있습니다. 가능한 변형. 또한 이 단계에서는 일반적으로 다음을 제거합니다.단어 중지, 그런 단어입니다 일반적으로 검색에는 쓸모가 없습니다. (간단히 말하면 토큰은 어휘는 스포츠 토토 텍스트의 원시 조각이고 어휘는 단어입니다. 색인 생성 및 검색에 유용하다고 생각됩니다.)PostgreSQL사용사전이 단계를 수행합니다. 다양한 규격 사전이 제공되며, 사용자 정의 사전을 생성할 수 있습니다. 특정 요구 사항.

  • 전처리된 저장 중 검색에 최적화된 스포츠 토토. 예를 들어, 각각 스포츠 토토는 정규화된 정렬된 배열로 표현될 수 있습니다. 어휘소. 어휘소와 함께 저장하는 것이 종종 바람직합니다. 사용할 위치 정보근접성 순위, 더 많은 내용을 포함하는 스포츠 토토가 되도록"밀도"쿼리 단어의 영역이 더 높은 값으로 할당됩니다. 흩어져 있는 검색어를 사용하여 순위를 매깁니다.

사전을 사용하면 토큰이 어떻게 저장되는지 세밀하게 제어할 수 있습니다. 정규화되었습니다. 적절한 사전을 사용하면 다음을 수행할 수 있습니다.

  • 색인이 생성되어서는 안되는 불용어를 정의하세요.

  • 다음을 사용하여 동의어를 단일 단어로 매핑Ispell.

  • 동의어 사전을 사용하여 구문을 단일 단어로 매핑합니다.

  • 다음을 사용하여 단어의 다양한 변형을 표준 형식으로 매핑합니다.Ispell사전.

  • 다음을 사용하여 단어의 다양한 변형을 표준 형식으로 매핑눈덩이형태소 분석 규칙.

데이터 유형ts벡터다음에 제공됩니다. 유형과 함께 전처리된 스포츠 토토 저장tsquery처리된 쿼리를 나타내기 위해(섹션 8.11). 많은 다음 데이터 유형에 사용할 수 있는 함수 및 연산자(섹션 9.13), 가장 중요한 그 중 일치 연산자가 있습니다@@, 우리는에서 소개합니다섹션 12.1.2. 인덱스를 사용하면 전체 텍스트 검색 속도를 높일 수 있습니다(섹션 12.9).

12.1.1. 스포츠 토토란 무엇입니까?

A 스포츠 토토검색 단위입니다 전문 검색 시스템; 예를 들어 잡지 기사나 이메일 메시지. 텍스트 검색 엔진은 스포츠 토토를 구문 분석할 수 있어야 하며 상위 항목과 어휘소(키워드)의 연관을 저장합니다. 스포츠 토토. 나중에 이러한 연관은 검색에 사용됩니다. 검색어가 포함된 스포츠 토토입니다.

다음 내에서 검색하는 경우PostgreSQL, 스포츠 토토는 일반적으로 데이터베이스 행 내의 텍스트 필드입니다. 테이블 또는 해당 필드의 조합(연결) 아마도 여러 테이블에 저장되거나 동적으로 얻을 수 있습니다. 다른 곳에서는 즉, 스포츠 토토는 여러 부분으로 구성될 수 있습니다. 인덱싱을 수행하며 전체적으로 어디에도 저장되지 않을 수 있습니다. 에 대한 예:

제목 선택 || ' ' ||  작성자 || ' ' ||  추상 || ' ' || 본문 AS 스포츠 토토
메시지에서
어디에서 mid = 12;

SELECT m.제목 || ' ' || m.작가 || ' ' || m.추상 || ' ' || d.body AS 스포츠 토토
FROM 메시지 m, 스포츠 토토 d
어디에서 mid = 했나요 AND mid = 12;

참고:실제로 이 예시 쿼리에서는,합체단일을 방지하는 데 사용해야 합니다.NULL속성을 유발하여NULL전체 스포츠 토토에 대한 결과입니다.

또 다른 가능성은 스포츠 토토를 간단한 텍스트로 저장하는 것입니다 파일 시스템의 파일. 이 경우 데이터베이스를 사용하여 다음을 수행할 수 있습니다. 전체 텍스트 인덱스를 저장하고 검색을 실행하며 일부 고유한 식별자는 파일에서 스포츠 토토를 검색하는 데 사용될 수 있습니다. 시스템. 그러나 데이터베이스 외부에서 파일을 검색하는 경우 슈퍼유저 권한이나 특수 기능 지원이 필요하므로 일반적으로 모든 데이터를 내부에 보관하는 것보다 덜 편리합니다.PostgreSQL. 또한, 유지하는 데이터베이스 내부의 모든 항목을 통해 스포츠 토토에 쉽게 액세스할 수 있습니다. 색인 생성 및 표시를 지원하는 메타데이터입니다.

텍스트 검색을 위해 각 스포츠 토토는 다음으로 축소되어야 합니다. 전처리됨ts벡터형식. 검색 및 순위는 전적으로에서 수행됩니다.ts벡터스포츠 토토 표현 — 원본 텍스트는 스포츠 토토를 선택한 경우에만 검색하면 됩니다. 사용자에게 표시합니다. 그러므로 우리는 종종 다음과 같은 말을 합니다.ts벡터스포츠 토토이기 때문에 물론 그렇습니다. 전체 스포츠 토토를 간략하게 표현한 것뿐입니다.

12.1.2. 기본 텍스트 일치

전체 텍스트 검색PostgreSQL일치 연산자를 기반으로 함@@, 반환사실if ats벡터(스포츠 토토) a와 일치tsquery(쿼리). 그것은 중요하지 않습니다 어떤 데이터 유형이 먼저 기록되는지:

SELECT '뚱뚱한 고양이가 매트 위에 앉아 살찐 쥐를 먹었습니다'::tsVector @@ '고양이 & 쥐'::tsquery;
 ?열?
----------
 티

SELECT '뚱뚱하고 소'::tsquery @@ '뚱뚱한 고양이가 매트 위에 앉아 살찐 쥐를 먹었습니다.'::tsVector;
 ?열?
----------
 에프

위의 예에서 알 수 있듯이, atsquery단지 원시 텍스트가 아닙니다.ts벡터입니다. 갑tsquery포함 이미 정규화된 어휘소여야 하는 검색어 AND, OR 및 NOT 연산자를 사용하여 여러 용어를 결합합니다. ( 자세한 내용은 참조PostgreSQL : 문서 : 9.3 : 토토 베이 검색 토토 베이.) 기능이 있습니다to_tsquery그리고plainto_tsquery도움이 되는 사용자가 작성한 텍스트를 적절한 텍스트로 변환tsquery, 예를 들어 다음에 나타나는 단어를 정규화하여 텍스트. 마찬가지로,to_tsVector이다 스포츠 토토 문자열을 구문 분석하고 정규화하는 데 사용됩니다. 그래서 실제로는 텍스트 검색 일치는 다음과 같습니다.

SELECT to_tsVector('뚱뚱한 고양이가 뚱뚱한 쥐를 먹었습니다') @@ to_tsquery('뚱뚱하고 쥐');
 ?열? 
----------
 티

다음과 같이 작성하면 이 일치가 성공하지 못할 것임을 관찰하십시오.

SELECT '뚱뚱한 고양이가 뚱뚱한 쥐를 먹었습니다'::tsVector @@ to_tsquery('뚱뚱한 & 쥐');
 ?열? 
----------
 에프

여기에는 단어의 정규화가 없으므로이 발생합니다. a의 요소ts벡터어휘소는 이미 가정된 어휘입니다. 정규화되었으므로일치하지 않음.

@@운영자도 지원합니다텍스트입력, 명시적인 변환 허용 텍스트 문자열을ts벡터또는tsquery간단한 경우에는 건너뜁니다. 변형 사용 가능한 항목은 다음과 같습니다:

ts벡터@@tsquery
tsquery @@ ts벡터
텍스트@@tsquery
문자 @@ 문자

이들 중 처음 두 가지는 이미 보았습니다. 양식텍스트 @@ tsquery다음과 동일함to_tsVector(x) @@ y. 양식텍스트 @@ 텍스트다음과 동일함to_tsVector(x) @@ plainto_tsquery(y).

12.1.3. 구성

위의 내용은 모두 간단한 텍스트 검색 예입니다. 언급했듯이 이전에는 전체 텍스트 검색 기능에 다음과 같은 기능이 포함되었습니다. 더 많은 것: 특정 단어(불용어) 색인 생성 건너뛰기, 프로세스 동의어를 사용하고 정교한 구문 분석(예: 더 많은 것을 기반으로 구문 분석)을 사용합니다. 단순한 공백보다. 이 기능은 다음으로 제어됩니다.텍스트 검색 구성. PostgreSQL사전 정의되어 제공됨 다양한 언어에 대한 구성을 쉽게 만들 수 있습니다. 자신의 구성. (psql's\dF명령은 사용 가능한 모든 항목을 표시합니다. 구성.)

설치하는 동안 적절한 구성이 선택되고default_text_search_config에 따라 설정됨postgresql.conf. 만약에 전체에 대해 동일한 텍스트 검색 구성을 사용하고 있습니다. 클러스터에서 값을 사용할 수 있습니다.postgresql.conf. 다양한 구성을 사용하려면 클러스터 전체에 걸쳐 있지만 어느 클러스터 내에서도 동일한 구성 데이터베이스, 사용데이터베이스 변경...설정. 그렇지 않으면 설정할 수 있습니다.default_text_search_config각 세션에서.

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

사용자 정의 텍스트 검색 구성을 더 쉽게 만들려면 구성은 더 간단한 데이터베이스 개체로 구성됩니다.포스트그레SQL의 텍스트 검색 기능 네 가지 유형의 구성 관련 데이터베이스 개체를 제공합니다.

  • 텍스트 검색 파서스포츠 토토 중단 토큰으로 분류하고 각 토큰을 분류합니다(예: 단어 또는 숫자).

  • 텍스트 검색 사전토큰 변환 정규화된 형식을 사용하고 불용어를 거부합니다.

  • 텍스트 검색 템플릿제공 사전의 기본 기능. (사전은 단순히 다음을 지정합니다. 템플릿 및 템플릿에 대한 매개변수 집합입니다.)

  • 텍스트 검색 구성다음을 선택하세요 토큰을 정규화하는 데 사용할 파서 및 사전 세트 파서에 의해 생성됩니다.

텍스트 검색 파서 및 템플릿은 낮은 수준의 C로 구축되었습니다. 기능; 따라서 개발하려면 C 프로그래밍 능력이 필요합니다. 새로운 것, 데이터베이스에 설치할 수 있는 수퍼유저 권한. (다음 페이지에 추가 파서 및 템플릿의 예가 있습니다.기여/지역PostgreSQLdistribution.) 사전 이후 구성은 매개변수화하고 일부를 함께 연결합니다. 기본 파서 및 템플릿에는 특별한 권한이 필요하지 않습니다. 새 사전 또는 구성을 만듭니다. 생성의 예 사용자 정의 사전 및 구성은 이 스포츠 토토의 뒷부분에 나와 있습니다. 장.