Postgresql 9.0.23 토토 커뮤니티화 | ||||
---|---|---|---|---|
토토 사이트 : 문서 : 9.0 : 전문 검색 | up | 12 장. 전체 텍스트 검색 | PostgreSQL : 문서 : 9.0 : 테이블 및 토토 캔 |
전체 텍스트 검색 (또는 just텍스트 찾다) 자연 언어를 식별하는 능력을 제공합니다토토 커뮤니티a쿼리, 그리고 선택적으로 관련성에 따라 정렬합니다 쿼리에. 가장 일반적인 검색 유형은 모든 것을 찾는 것입니다. 주어진 토토 커뮤니티쿼리 용어순서대로 반환유사성쿼리에. 개념쿼리and유사성are 매우 유연하며 특정 응용 프로그램에 의존합니다. 그만큼 가장 간단한 검색 고려쿼리세트로 단어와유사성주파수로 토토 커뮤니티의 쿼리 단어.
101PostgreSQL : 토토 커뮤니티 : 9.0 : 소개09postgresqlhas~, ~*, 좋아요및ilike운영자 텍스트 데이터 유형의 경우에는 많은 필수 속성이 부족합니다. 현대 정보 시스템에 의해 필요하다 :
영어조차도 언어 적 지원이 없습니다. 정기적인 표현은 쉽게 할 수 없기 때문에 충분하지 않습니다 파생 된 단어 처리 (예 :만족and만족. 포함 된 토토 커뮤니티를 놓칠 수 있습니다만족, 아마도 검색 할 때 그들을 찾고 싶습니다만족. 사용할 수 있습니다또는여러 파생 양식을 검색하려면 이것은 지루하고 오류가 발생하기 쉽습니다 (일부 단어는 몇 가지를 가질 수 있습니다. 천 개의 파생물).
검색 결과의 주문 (순위)을 제공합니다. 수천 명의 일치 할 때 효과가 없습니다 토토 커뮤니티가 발견됩니다.
색인 지원이 없기 때문에 느리게하는 경향이 있으므로 그들은 모든 검색에 대해 모든 토토 커뮤니티를 처리해야합니다.
전체 텍스트 인덱싱 허용 토토 커뮤니티전처리그리고 인덱스가 저장되었습니다 나중에 빠른 검색. 전처리 포함 :
토토 커뮤니티를 구문 분석합니다 토큰. 다양한 클래스를 식별하는 것이 유용합니다 토큰, 예 : 숫자, 단어, 복잡한 단어, 이메일 주소, 그들이 다르게 처리 될 수 있도록. 원칙적으로 토큰 클래스는 특정 응용 프로그램에 따라 다르지만 대부분은 대부분에 따라 다릅니다 목적 사전 정의 된 클래스 세트를 사용하는 것이 적절합니다.PostgreSQLa 사용Parser이 단계를 수행하려면. 표준 파서가 제공되며 사용자 정의 파서를 만들 수 있습니다. 특정 요구.
토큰 변환 Lexemes. lexeme은 토큰처럼 끈이지만정규화같은 단어의 다른 형태는 비슷하게 만들어집니다. 예를 들어, 정규화에는 거의 항상 폴딩 상부 사례가 포함됩니다 소문자에 대한 문자, 종종 접미사를 제거하는 것과 관련이 있습니다 (와 같은S또는es영어). 이를 통해 검색을 찾을 수 있습니다 지루하게 들어 가지 않고 같은 단어의 변형 형태 가능한 모든 변형. 또한이 단계는 일반적으로 제거단어 중지너무 흔한 단어는 검색에 쓸모가 없습니다. (요컨대, 토큰은 토토 커뮤니티의 원시 조각입니다. Lexemes는 유용한 것으로 여겨지는 단어입니다. 인덱싱 및 검색.)PostgreSQL용도사전이 단계를 수행하려면. 다양한 표준 사전이 제공되며 맞춤형 사전이있을 수 있습니다 특정 요구를 위해 만들어졌습니다.
전처리 저장 검색에 최적화 된 토토 커뮤니티. 예를 들어, 각각 토토 커뮤니티는 정규화 된 정렬 된 배열로 표시 될 수 있습니다. Lexemes. Lexemes와 함께 종종 바람직합니다 사용할 위치 정보 저장근접 순위더 포함"밀도가 높은"영역 쿼리 단어는 산란 된 것보다 높은 순위가 할당됩니다. 쿼리 단어.
사전은 토큰의 방법을 세밀하게 제어 할 수 있습니다 정규화. 적절한 사전을 사용하면 다음과 같이 할 수 있습니다.
색인을 작성해서는 안되는 중지 단어 정의.
동의어를 하나의 단어로 맵핑Ispell.
동의어 사전을 사용하여 단일 단어에 대한 문구를 맵핑하십시오.
단어의 다른 변형을 표준 형태로 매핑 사용 사용Ispell사전.
단어의 다른 변형을 표준 형태로 매핑 사용SnowballStemmer 규칙.
데이터 유형TSVECTOR가 제공됩니다 유형과 함께 전처리 토토 커뮤니티 저장tsquery처리 된 쿼리를 나타내는 경우 (섹션 8.11). 많은 것이 있습니다 이러한 데이터 유형에 사용 가능한 기능 및 연산자 (섹션 9.13), 가장 중요한 그 중 매치 연산자@@우리는 소개섹션 12.1.2. 인덱스를 사용하여 전체 텍스트 검색을 가속화 할 수 있습니다 (섹션 12.9).
a토토 커뮤니티검색 단위입니다 전체 텍스트 검색 시스템에서; 예를 들어, 잡지 기사 또는 이메일 메시지. 텍스트 검색 엔진은 구문 분석 할 수 있어야합니다 Lexemes (키 단어)의 토토 커뮤니티 및 상점 협회 그들의 부모 토토 커뮤니티. 나중에이 협회는 익숙합니다 쿼리 단어가 포함 된 토토 커뮤니티 검색.
내 검색의 경우PostgreSQL, 토토 커뮤니티는 일반적으로 a입니다 데이터베이스 테이블 행 내 또는 아마도 그러한 필드의 조합 (연결) 여러 테이블 또는 동적으로 얻었습니다. 다시 말해, a 인덱싱을 위해 다른 부품에서 토토 커뮤니티를 구성 할 수 있습니다 그리고 그것은 전체적으로 저장되지 않을 수 있습니다. 을 위한 예:
제목 선택 || ''|| 저자 || ''|| 초록 || ''|| 토토 커뮤니티로서의 몸 메시지에서 여기서 Mid = 12; M.Title ||를 선택하십시오 ''|| M.Author || ''|| M.AbStract || ''|| D. 토토 커뮤니티로서 메시지 m, 토토 커뮤니티 d 여기서 Mid = Did와 Mid = 12;
참고 :실제로,이 예제에서 쿼리
Coalesce
익숙해 져야합니다 싱글 방지NULL속성 a를 일으킨다NULL결과 전체 토토 커뮤니티.
또 다른 가능성은 토토 커뮤니티를 간단한 텍스트로 저장하는 것입니다. 파일 시스템의 파일. 이 경우 데이터베이스가 될 수 있습니다 전체 텍스트 색인을 저장하고 검색을 실행하는 데 사용되었습니다. 일부 고유 식별자를 사용하여 토토 커뮤니티를 검색 할 수 있습니다. 파일 시스템에서. 그러나 외부에서 파일을 검색합니다 데이터베이스에는 슈퍼 사용자 권한 또는 특수 기능이 필요합니다 지원, 이것은 일반적으로 모든 것을 유지하는 것보다 덜 편리합니다. 내부의 데이터PostgreSQL. 또한 데이터베이스 내부의 모든 것을 유지하면 쉽게 액세스 할 수 있습니다 인덱싱 및 디스플레이에 도움이되는 메타 데이터를 토토 커뮤니티화하려면
텍스트 검색 목적의 경우 각 토토 커뮤니티를 줄여야합니다. 전처리TSVECTOR형식. 검색 및 순위는 전적으로에서 수행됩니다.TSVECTOR토토 커뮤니티 표현 - 원본 텍스트는 토토 커뮤니티가있을 때만 검색해야합니다. 사용자에게 표시하도록 선택되었습니다. 그러므로 우리는 종종에 대해 이야기합니다.TSVECTOR토토 커뮤니티로서 물론 그것은 전체의 작품 일뿐입니다. 토토 커뮤니티.
전체 텍스트 검색에서PostgreSQL매치 연산자를 기반으로@@, 반환trueif atsvector(토토 커뮤니티) 일치 aTSQUERY(쿼리). 그것 어떤 데이터 유형이 먼저 작성되었는지 상관 없습니다 :
'뚱뚱한 고양이가 매트에 앉아 뚱뚱한 쥐를 먹었다':: tsvector @@ 'cat & rat':: tsquery; ?열? --------- 티 'fat & cow':: tsquery @@ '뚱뚱한 고양이가 매트에 앉아 뚱뚱한 쥐를 먹었다':: tsvector; ?열? --------- 에프
위의 예에서 알 수 있듯이 Atsquery| 단순한 텍스트가 아니라TSVECTORis. 에이tsquery검색어가 포함되어 있어야합니다
이미 정규화 된 Lexemes이며 여러 용어를 결합 할 수 있습니다
운영자가 아닌 사용 및 또는 OR. (자세한 내용은 참조섹션 8.11.)가 있습니다
기능to_tsquery
andPlainto_tsquery
도움이됩니다
사용자가 작성한 텍스트를 적절한 것으로 변환 할 때tsquery, 예를 들어 단어가 나타나는 단어를 정규화하여
텍스트에서. 비슷하게,to_tsvector
| a
문자열 문자열. 실제로 텍스트 검색 경기가 보일 것입니다
이렇게 더 :
select to_tsvector ( 'Fat Cats Ate Fat Rats') @@ to_tsquery ( 'Fat & Rat'); ?열? --------- 티
이 경기가로 작성되면 성공하지 못한다는 것을 관찰하십시오.
'지방 고양이는 지방 쥐를 먹었다':: tsvector @@ to_tsquery ( 'fat & rat'); ?열? --------- 에프
여기서 단어의 정규화가 없으므로쥐발생합니다. A의 요소TSVECTOR이미 가정 된 Lexemes입니다 정규화, 그래서쥐일치하지 않습니다쥐.
the@@운영자도 지원텍스트입력, 명시 적 변환이 가능합니다 텍스트 문자열TSVECTOR또는tsquery간단한 경우에 건너 뜁니다. 사용 가능한 변형은 다음과 같습니다.
tsvector @@ tsquery tsquery @@ tsvector 텍스트 @@ tsquery 텍스트 @@ 텍스트
우리가 이미 본 첫 번째 두 가지. 양식텍스트 @@ tsqueryto_tsvector (x) @@ y. 양식텍스트 @@ 텍스트to_tsvector (x) @@ plainto_tsquery (y).
위의 모든 간단한 텍스트 검색 예제입니다. 언급했듯이 이전에는 전체 텍스트 검색 기능에는 기능이 포함됩니다 더 많은 일을하십시오 : 특정 단어를 색인화하기 (단어 중지), 동의어를 처리하고 정교한 구문 분석 (예 : 구문 분석)을 사용하십시오 단순한 공백 이상을 기반으로합니다. 이 기능은 다음과 같습니다 제어텍스트 검색 구성. PostgreSQL많은 언어에 대한 사전 정의 된 구성과 함께 제공됩니다 자신만의 구성을 쉽게 만들 수 있습니다. (PSQL's\ df명령이 사용 가능한 모든 구성을 표시합니다.)
설치 중에 적절한 구성이 선택됩니다 그리고default_text_search_config그에 따라 설정됩니다postgresql.conf. 같은 텍스트를 사용하는 경우 전체 클러스터의 검색 구성을 사용할 수 있습니다. 가치postgresql.conf. 사용합니다 클러스터 전체에 걸쳐 다른 구성이지만 동일합니다 하나의 데이터베이스 내 구성, 사용데이터베이스 변경 ... 세트. 그렇지 않으면 설정할 수 있습니다default_text_search_config각각 세션.
구성에 의존하는 각 텍스트 검색 기능 선택 사항이 있습니다RegConfig인수 사용하는 구성을 명시 적으로 지정할 수 있습니다.default_text_search_config사용됩니다 이 주장이 생략 될 때만.
사용자 정의 텍스트 검색을보다 쉽게 구축 할 수 있도록 구성, 구성은 더 간단하게 구성됩니다 데이터베이스 개체.PostgreSQL's 텍스트 검색 시설은 네 가지 유형의 유형을 제공합니다 구성 관련 데이터베이스 개체 :
텍스트 검색 파서브레이크 토큰으로 토토 커뮤니티를 작성하고 각 토큰을 분류합니다 (예 : 단어 나 숫자로).
텍스트 검색 사전토큰을 정규화 된 형태로 변환하고 정지를 거부하십시오 단어.
텍스트 검색 템플릿제공 사전의 기본 기능. (사전 템플릿과 매개 변수 세트를 지정합니다. 주형.)
텍스트 검색 구성사용할 파서와 사전 세트를 선택하십시오. 파서에서 생성 한 토큰을 정상화하십시오.
텍스트 검색 파서 및 템플릿은 저수준 C에서 구축됩니다. 기능; 따라서 C 프로그래밍 능력이 필요합니다 새로운 것을 개발하고 슈퍼업자 권한을 개발하여 하나를 설치하십시오. 데이터베이스. (애드온 파서와 템플릿의 예가 있습니다 에서Contrib/영역PostgreSQL배포.) 사전과 구성이 매개 변수화되고 기본 파서와 템플릿을 함께 연결하십시오 새로운 사전 또는 구성. 맞춤형 사전 제작의 예 이 장의 뒷부분에서 구성이 나타납니다.