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

12.1. 소개

전체 텍스트 검색 (또는 Just텍스트 찾다) 자연 언어를 식별하는 능력을 제공합니다스포츠 토토만족쿼리, 그리고 선택적으로 관련성에 따라 정렬합니다 쿼리. 가장 일반적인 검색 유형은 모든 스포츠 토토를 찾는 것입니다. 주어진 포함쿼리 용어그리고 반환 그들 순서대로유사성질문. 개념쿼리and유사성는 매우 유연하며 특정 응용 프로그램. 가장 간단한 검색은쿼리단어 세트와유사성스포츠 토토.

텍스트 검색 연산자는 수년간 데이터베이스에 존재했습니다.postgresqlhas~, ~*, Likeilike운영자 텍스트 데이터 유형의 경우에는 많은 필수 속성이 부족합니다. 현대 정보 시스템에 의해 필요하다 :

  • 영어조차도 언어 적 지원이 없습니다. 정기적인 표현은 쉽게 처리 할 수 없기 때문에 충분하지 않습니다 파생 된 단어 (예 :만족and만족. 스포츠 토토를 놓칠 수 있습니다 포함하다만족, 아마도 검색 할 때 그들을 찾고 싶습니다만족. 사용할 수 있습니다또는여러 파생 양식을 검색하려면 이렇게합니다 지루하고 오류가 발생하기 쉽습니다 (일부 단어에는 수천 가지가있을 수 있습니다 파생 상품).

  • 검색 결과의 주문 (순위)을 제공하지 않습니다 수천 개의 일치하는 스포츠 토토가있을 때 효과가 없습니다 설립하다.

  • 색인 지원이 없기 때문에 느리게하는 경향이 있으므로 모든 검색에 대한 모든 스포츠 토토를 처리해야합니다.

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

  • 스포츠 토토를 구문 분석합니다 토큰. 다양한 종류의 토큰을 식별하는 것이 유용합니다. 예를 들어, 숫자, 단어, 복잡한 단어, 이메일 주소, 다르게 처리 할 수 있습니다. 원칙적으로 토큰 클래스는 의존합니다 특정 응용 프로그램이지만 대부분의 목적을 위해 사전 정의 된 클래스 세트를 사용하십시오.PostgreSQLa 사용Parser이 단계를 수행합니다. 표준 파서입니다 제공 및 특정 요구에 대해 맞춤형 파서를 만들 수 있습니다.

  • 토큰 변환 Lexemes. lexeme은 토큰처럼 끈이지만 계속 ~ 이다정규화다른 형태의 같은 단어가 비슷하게 만들어집니다. 예를 들어, 거의 정규화 항상 하급 및 종종 접은 상부 사례 문자가 포함됩니다 접미사 제거와 관련이 있습니다 (예 :S또는es영어). 이것은 검색을 허용합니다 지루하게 입력하지 않고 같은 단어의 변형 형식을 찾으십시오. 가능한 변형. 또한이 단계는 일반적으로 제거합니다단어 중지그들이 검색에 쓸모가 없다는 것이 일반적입니다. (요컨대, 토큰 스포츠 토토 텍스트의 원시 조각이고 Lexemes는 단어입니다. 인덱싱 및 검색에 유용한 것으로 여겨집니다.)PostgreSQL용도사전이 단계를 수행하려면. 다양한 표준 사전은 제공되며 사용자 정의를 만들 수 있습니다. 특정 요구.

  • 전처리 저장 검색에 최적화 된 스포츠 토토. 예를 들어, 각각 스포츠 토토는 정규화 된 정렬 된 배열로 표시 될 수 있습니다. Lexemes. Lexemes와 함께 보관하는 것이 종종 바람직합니다. 사용 할 위치 정보근접성 순위, 더 많은 것을 포함하는 스포츠 토토"밀도가 높은"쿼리 단어의 영역이 더 높아집니다 쿼리 단어가 흩어져있는 순위.

사전은 토큰의 방법을 세밀하게 제어 할 수 있습니다 정규화. 적절한 사전을 사용하면 다음과 같이 할 수 있습니다.

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

  • 동의어를 단일 단어로 맵핑Ispell.

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

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

  • 단어의 다른 변형을 사용하여 표준 형태로 매핑SnowballStemmer Rules.

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

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

aDocument검색 단위입니다 전문 검색 시스템; 예를 들어, 잡지 기사 또는 이메일 메시지. 텍스트 검색 엔진은 스포츠 토토를 구문 분석 할 수 있어야하며 Lexemes (키워드)와 부모와의 연관성을 상점합니다 스포츠 토토. 나중에이 협회는 검색에 사용됩니다 쿼리 단어가 포함 된 스포츠 토토.

내 검색 용PostgreSQL, 스포츠 토토는 일반적으로 데이터베이스 행 내 텍스트 필드입니다. 테이블 또는 아마도 그러한 필드의 조합 (연결), 아마도 여러 테이블에 저장되거나 동적으로 얻어 졌을 것입니다. 다른 단어, 스포츠 토토는 다른 부분에서 구성 할 수 있습니다. 인덱싱 및 전체적으로 어디서나 저장되지 않을 수 있습니다. 을 위한 예:

제목 선택 || ''||  저자 || ''||  초록 || ''|| 스포츠 토토로서의 몸
메시지에서
여기서 Mid = 12;

M.Title ||를 선택하십시오 ''|| M.Author || ''|| M.AbStract || ''|| D. 스포츠 토토로서
메시지 m, 스포츠 토토 d
여기서 Mid = Did와 Mid = 12;

참고 :실제로,이 예에서 쿼리Coalesce단일을 방지하는 데 사용해야합니다NULLa를 일으키는 속성NULL전체 스포츠 토토의 결과.

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

텍스트 검색 목적의 경우 각 스포츠 토토는 전처리TSVECTOR형식. 검색 및 순위는 전적으로에서 수행됩니다.TSVECTOR스포츠 토토 표현 - 원본 스포츠 토토가 선택된 경우에만 텍스트를 검색해야합니다. 사용자에게 표시하십시오. 그러므로 우리는 종종에 대해 이야기합니다.TSVECTOR스포츠 토토는 물론입니다 전체 스포츠 토토의 소형 표현 만.

12.1.2. 기본 텍스트 일치

전체 텍스트 검색에서PostgreSQL경기 연산자를 기반으로@@, 반환trueif aTSVECTOR(스포츠 토토) A와 일치tsquery(쿼리). 중요하지 않습니다 먼저 작성된 데이터 유형 :

'뚱뚱한 고양이가 매트에 앉아 뚱뚱한 쥐를 먹었다':: tsvector @@ 'cat & rat':: tsquery;
 ?열?
---------
 티

'fat & cow':: tsquery @@ '뚱뚱한 고양이가 매트에 앉아 뚱뚱한 쥐를 먹었다':: tsvector;
 ?열?
---------
 에프

위의 예에서 알 수 있듯이 ATSQUERY단지 원시 텍스트가 아니라TSVECTORis. 에이tsquery포함 이미 정규화되어야하는 검색어 및 5 월 연산자가 아닌 여러 용어를 사용하고 OR을 결합합니다. (을 위한 세부 사항 참조PostgreSQL : 문서 : 9.3 : 토토 베이 검색 토토 베이.) 기능이 있습니다to_tsqueryandPlainto_tsquery도움이되는 사용자가 작성한 텍스트를 적절한 것으로 변환tsquery, 예를 들어 표시되는 단어를 정규화하여 텍스트. 비슷하게,to_tsvectoris 문자열을 구문 분석하고 정규화하는 데 사용됩니다. 실제로 a 텍스트 검색 경기는 다음과 같습니다.

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

|

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

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

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

tsvector @@ tsquery
tsquery @@ tsvector
텍스트 @@ tsquery
텍스트 @@ 텍스트

우리가 이미 본 첫 두 가지. 양식텍스트 @@ tsqueryto_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이것은이 경우에만 사용됩니다 인수는 생략됩니다.

사용자 정의 텍스트 검색 구성을보다 쉽게 구축 할 수 있도록 구성은 더 간단한 데이터베이스 개체에서 구축되었습니다.PostgreSQL의 텍스트 검색 기능 구성 관련 데이터베이스 개체의 4 가지 유형 제공 :

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

  • 텍스트 검색 사전토큰 변환 정규화 된 형태와 중지 단어를 거부합니다.

  • 텍스트 검색 템플릿제공 사전 기본 기능. (사전은 단순히 a를 지정합니다 템플릿 및 템플릿의 매개 변수 세트.)

  • 텍스트 검색 구성a 파서 및 토큰을 정상화하는 데 사용할 사전 세트 파서에 의해 제작.

텍스트 검색 파서 및 템플릿은 저수준 C에서 구축됩니다. 기능; 따라서 C 프로그래밍 능력이 필요합니다 새로운 것, 슈퍼 서서 권한은 데이터베이스에 하나를 설치하는 권한을 부여합니다. (에는 애드온 파서와 템플릿의 예가 있습니다.Contrib/영역PostgreSQL분포.) 사전 이후 그리고 구성은 단지 매개 변수화하고 함께 연결합니다 기본 파서와 템플릿, 특별한 특권이 필요하지 않습니다. 새로운 사전 또는 구성을 만듭니다. 생성의 예 맞춤형 사전 및 구성이 뒷부분에 나타납니다 장.