| 토토 9.0.23 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.0 : 토토 사이트 | 위로 | 12장. 전체 텍스트 검색 | PostgreSQL : 문서 : 9.0 : 토토 예 | |
토토은 사용해서는 안 되는 단어를 제거하는 데 사용됩니다. 검색에서 고려됨(중지 단어) 및 에정규화단어가 다르기 때문에 동일한 단어의 파생 형태가 일치합니다. 성공적으로 정규화된 단어를 a라고 합니다.어휘. 검색 품질 개선 외에도 정규화 및 제거 중지 단어는 크기를 줄입니다.ts벡터문서를 표현하여 성능을 향상시킵니다. 정규화는 항상 언어적인 의미를 갖는 것은 아니며 일반적으로 애플리케이션 의미에 따라 다릅니다.
정규화의 몇 가지 예:
언어 - Ispell 토토은 입력 단어를 줄이려고 노력합니다. 정규화된 형태로; 형태소 토토은 단어를 제거합니다 엔딩
URL위치는 다음과 같습니다. 동등한 URL이 일치하도록 정규화되었습니다.
http://www.pgsql.ru/db/mw/index.html
http://www.pgsql.ru/db/mw/
http://www.pgsql.ru/db/../db/mw/index.html
색상 이름은 16진수 값으로 대체될 수 있습니다. 예를 들어,빨간색, 녹색, 파란색, 자홍색 - FF0000, 00FF00, 0000FF, FF00FF
숫자를 색인화하면 일부 소수점을 제거할 수 있습니다 가능한 숫자의 범위를 줄이기 위해 예를 들면3.14159265359, 3.1415926, 3.14이 될 것입니다 이후에 두 자리만 유지되면 정규화 후에도 동일합니다. 소수점.
토토은 토큰을 입력으로 받아들이고 반환:
입력 토큰이 알려진 경우 어휘 배열 토토(하나의 토큰이 둘 이상의 토큰을 생성할 수 있음에 유의) 어휘)
다음을 포함한 단일 어휘TSL_FILTER플래그 세트, 원본 대체 후속 토큰으로 전달될 새 토큰이 포함된 토큰 토토(이를 수행하는 토토을 a토토 필터링)
토토이 토큰을 알고 있지만 빈 배열입니다. 불용어입니다
NULL토토이 그렇지 않은 경우 입력 토큰을 인식합니다
포스트그레SQL제공 다양한 언어에 대해 토토 정의된 토토. 또한 있다 새로운 생성에 사용할 수 있는 토토 정의된 여러 템플릿 맞춤 매개변수가 포함된 토토. 토토 정의된 각 토토 템플릿은 아래에 설명되어 있습니다. 기존 템플릿이 적합하지 않은 경우 새로운 것을 만드는 것이 가능합니다. 참조하세요기여/지역토토예시를 위한 배포.
텍스트 검색 구성은 파서를 세트와 함께 바인딩합니다 파서의 출력 토큰을 처리하기 위한 토토입니다. 각각에 대해 파서가 반환할 수 있는 토큰 유형, 별도의 목록 토토은 구성에 따라 지정됩니다. 토큰일 때 해당 유형이 파서에 의해 발견되면 목록의 각 토토은 일부 토토이 이를 알려진 것으로 인식할 때까지 차례로 참조합니다. 단어. 불용어로 식별되거나 토토이 없는 경우 토큰을 인식하면 폐기되고 색인이 생성되지 않습니다. 검색했습니다. 일반적으로 다음을 반환하는 첫 번째 토토은 비-NULL출력에 따라 결과가 결정됩니다. 나머지 토토은 참조되지 않습니다. 하지만 필터링 토토은 주어진 단어를 수정된 단어로 바꿀 수 있습니다. 그런 다음 후속 토토으로 전달됩니다.
토토 목록을 구성하는 일반적인 규칙은 다음과 같습니다. 가장 좁고 가장 구체적인 토토을 먼저 배치한 다음 보다 일반적인 토토, 매우 일반적인 것으로 마무리 토토, 예를 들어눈덩이음소거 또는단순, 인식합니다. 모든 것. 예를 들어 천문학 관련 검색의 경우 (astro_en구성) 바인딩할 수 있습니다. 토큰 유형asciiword(ASCII 단어)를 천문용어 동의어토토, 일반영어 토토과 a눈덩이영어 형태소 분석기:
텍스트 검색 구성 변경 astro_en
astrosyn, english_ispell, english_stem을 사용하여 asciiword에 대한 매핑을 추가합니다.
필터링 토토은 목록의 어느 곳에나 위치할 수 있습니다. 쓸모없는 마지막 부분을 제외하고. 필터링 토토 작업을 단순화하기 위해 단어를 부분적으로 정규화하는 데 유용합니다. 나중에 토토. 예를 들어 필터링 토토은 다음과 같을 수 있습니다. 다음과 같이 악센트가 있는 문자에서 악센트를 제거하는 데 사용됩니다.기여/악센트 없음확장 모듈.
불요 단어는 매우 일반적이며 거의 모든 언어에 나타나는 단어입니다. 모든 문서이며 차별 가치가 없습니다. 그러므로, 전체 텍스트 검색에서는 무시될 수 있습니다. 에 대한 예를 들어, 모든 영어 텍스트에는 다음과 같은 단어가 포함되어 있습니다.a그리고the그렇군요. 인덱스에 저장하는 것은 쓸모가 없습니다. 그러나 중지 단어는 의 위치에 영향을 미칩니다.ts벡터, 결과적으로 순위에 영향을 미칩니다.
SELECT to_tsVector('english','불용어 목록에서');
to_ts벡터
---------------
'목록':3 '중지':5 '단어':6
1,2,4번 위치가 누락된 이유는 불용어 때문입니다. 순위 불용어가 있거나 없는 문서에 대해 계산된 값은 상당히 높습니다. 다르다:
SELECT ts_rank_cd (to_tsVector('english','중지 단어 목록에서'), to_tsquery('list & stop'));
ts_rank_cd
------------
0.05
SELECT ts_rank_cd (to_tsVector('english','목록 중지 단어'), to_tsquery('목록 & 중지'));
ts_rank_cd
------------
0.1
중지를 어떻게 처리하는지는 특정 토토에 달려 있습니다. 단어. 예를 들어,ispell토토은 먼저 단어를 정규화한 다음 다음 단어 목록을 살펴봅니다. 말을 멈추세요, 동안눈덩이스테머 먼저 불용어 목록을 확인하세요. 그 이유는 다른 행동은 소음을 줄이려는 시도입니다.
그단순토토 템플릿 입력 토큰을 소문자로 변환하여 작동하고 중지 단어 파일과 비교하여 확인합니다. 에서 발견된 경우 파일을 열면 빈 배열이 반환되어 토큰이 폐기되었습니다. 그렇지 않은 경우 단어의 소문자 형식이 반환됩니다. 정규화된 어휘소로. 또는 토토은 다음과 같습니다. 비불용어를 인식되지 않은 것으로 보고하도록 구성되어 있습니다. 목록의 다음 토토으로 전달됩니다.
다음은 다음을 사용한 토토 정의의 예입니다.간단한템플릿:
텍스트 검색 토토 생성 public.simple_dict(
템플릿 = pg_catalog.simple,
STOPWORDS = 영어
);
여기,영어는 다음의 기본 이름입니다. 불용어 파일. 파일의 전체 이름은 다음과 같습니다.$SHAREDIR/tsearch_data/english.stop, 여기서$SHAREDIR의미토토설치의 공유 데이터 디렉토리, 자주/usr/local/share/토토(사용pg_config --sharedir당신이 확실하지 않음). 파일 형식은 단순히 단어 목록입니다. 라인. 빈 줄과 후행 공백은 무시됩니다. 케이스를 소문자로 접었을 뿐 다른 가공은 하지 않았습니다. 파일 내용에.
이제 토토을 테스트할 수 있습니다:
SELECT ts_lexize('public.simple_dict','Yes');
ts_lexize
-----------
예
SELECT ts_lexize('public.simple_dict','The');
ts_lexize
-----------
우리는 또한 복귀를 선택할 수도 있습니다NULL, 소문자 단어 대신, 정지 위치에 해당 단어가 없으면 단어 파일. 이 동작은 다음을 설정하여 선택됩니다. 토토의수락매개변수 ~거짓. 예시를 계속하면:
ALTER TEXT SEARCH DICTIONARY public.simple_dict ( Accept = false );
SELECT ts_lexize('public.simple_dict','예');
ts_lexize
-----------
SELECT ts_lexize('public.simple_dict','The');
ts_lexize
-----------
기본 설정은수락 = 참, a를 배치하는 것만 유용합니다.단순목록 끝에 토토 어떤 토큰도 절대 전달하지 않기 때문입니다. 다음 토토. 반대로,수락 = 거짓만 다음 토토이 하나 이상 있을 때 유용합니다.
| 주의 |
|
대부분의 토토 유형은 구성에 의존합니다. 불용어 파일과 같은 파일. 이 파일들반드시수 utf-8 인코딩으로 저장됩니다. 다음으로 번역됩니다. 실제 데이터베이스 인코딩(다른 경우) 서버로 읽어들일 때. |
| 주의 |
|
일반적으로 데이터베이스 세션은 토토을 읽습니다. 구성 파일은 처음 사용될 때 한 번만 사용됩니다. 세션 내에서. 구성 파일을 수정하는 경우 기존 세션이 새로운 세션을 선택하도록 강제하고 싶습니다. 내용, 발행텍스트 변경 검색 토토토토에 대한 명령입니다. 이 a가 될 수 있다"더미"업데이트하세요 실제로 매개변수 값은 변경되지 않습니다. |
이 토토 템플릿은 토토을 생성하는 데 사용됩니다. 단어를 동의어로 바꾸십시오. 구문은 지원되지 않습니다(사용 동의어 토토 템플릿(섹션 12.6.4)). 동의어 토토을 사용하여 다음을 수행할 수 있습니다. 예를 들어, 언어적 문제를 극복하여 영어 형태소 분석 토토은 'Paris'라는 단어를 다음으로 줄여서 표현합니다. '파리'. 하나면 충분해요파리 파리동의어 토토의 줄을 입력하고 그 앞에 넣으세요english_stem토토. 에 대한 예:
SELECT * FROM ts_debug('english', 'Paris');
별칭 | 설명 | 토큰 | 토토 | 토토 | 어휘소
---------+------+-------+---+---------------+---------
ASCII워드 | 단어, 모두 ASCII | 파리 | english_stem | 영어_줄기 | 파리
텍스트 검색 토토 생성 my_synonym(
템플릿 = 동의어,
동의어 = my_synonyms
);
텍스트 검색 구성 변경 english
ASCIIWord에 대한 매핑 변경
WITH my_synonym, english_stem;
SELECT * FROM ts_debug('english', 'Paris');
별칭 | 설명 | 토큰 | 토토 | 토토 | 어휘소
---------+------+-------+---------------+------------+---------
ASCII워드 | 단어, 모두 ASCII | 파리 | my_synonym,english_stem | 내_동의어 | 파리
다음에 필요한 유일한 매개변수는동의어템플릿은동의어은 해당 제품의 기본 이름입니다. 구성 파일 —my_synonyms에 위의 예. 파일의 전체 이름은 다음과 같습니다.$SHAREDIR/tsearch_data/my_synonyms.syn(어디에서$SHAREDIR의미토토설치의 공유 데이터 디렉토리). 파일 형식은 단어 당 한 줄입니다. 대체, 단어 뒤에 동의어가 따라옴, 분리됨 공백으로. 빈 줄과 후행 공백은 다음과 같습니다. 무시됩니다.
그동의어템플릿에는 선택적 매개변수대소문자 구분, 기본값은거짓. 언제대소문자 구분is거짓, 동의어 파일의 단어는 다음과 같이 접혀 있습니다. 입력 토큰과 마찬가지로 소문자입니다. 그럴 때참, 단어와 토큰은 아래로 접혀지지 않습니다. 경우에는 있는 그대로 비교됩니다.
별표(*)는 다음 위치에 배치할 수 있습니다.
구성 파일의 동의어 끝. 이는 다음을 나타냅니다.
동의어는 접두사입니다. 별표는 다음과 같은 경우 무시됩니다.
항목은 다음에서 사용됩니다.to_ts벡터(),
그러나 그것이 사용될 때to_tsquery(), 결과는 쿼리 항목이 됩니다.
접두사 일치 마커 포함(참조섹션
12.3.2). 예를 들어, 다음 항목이$SHAREDIR/tsearch_data/synonym_sample.syn:
포스트그레스 pgsql 포스트그레SQL 포스트그레 pgsql 고글구글 인덱스 인덱스*
그러면 우리는 다음과 같은 결과를 얻게 될 것입니다:
mydb=# 텍스트 검색 토토 생성 syn (템플릿=동의어, 동의어='synonym_sample');
mydb=# SELECT ts_lexize('syn','인덱스');
ts_lexize
-----------
색인
동의어 토토(때때로 다음과 같이 축약됨TZ)은 단어 모음입니다. 단어와 단어의 관계에 대한 정보를 포함합니다. 문구, 즉 더 넓은 용어(BT), 더 좁은 용어(NT), 선호 용어, 비선호 용어, 관련 용어 등
기본적으로 동의어 토토은 선호하지 않는 모든 토토을 대체합니다. 하나의 선호하는 용어로 용어를 선택하고 선택적으로 보존합니다. 색인 생성에 대한 원래 용어도 마찬가지입니다.토토의 현재 구현은 유의어 토토은 동의어 토토의 확장입니다. 추가됨구문지원합니다. 동의어 토토 토토에는 다음 구성 파일이 필요합니다. 형식:
# 이것은 댓글입니다 샘플 단어: 색인된 단어 더 많은 샘플 단어: 더 많은 색인 단어 ...
여기서 콜론(:) 기호는 문구와 대체 문구 사이의 구분 기호입니다.
동의어 토토은 다음을 사용합니다.하위토토(다음에 지정됨) 토토 구성) 이전에 입력 텍스트를 정규화합니다. 구문 일치를 확인합니다. 하나만 선택 가능합니다 하위 토토. 하위 토토이 실패하면 오류가 보고됩니다. 단어를 인식하는 것. 이 경우에는 다음의 사용을 제거해야 합니다. 단어를 말하거나 그것에 대해 하위 토토을 가르칩니다. 당신은 별표(*)의 시작 부분에 하위 토토 적용을 건너뛰려면 색인된 단어가 필요하지만 모두 샘플 단어반드시수 하위 토토에 알려졌습니다.
동의어 토토은 가장 긴 일치 항목이 있는 경우 선택합니다. 입력과 일치하는 여러 문구가 있으며 동점은 다음과 같이 구분됩니다. 마지막 정의를 사용합니다.
하위 토토에 의해 인식되는 특정 중지 단어는 사용할 수 없습니다. 명시되어야 한다; 대신에 사용하세요?표시하다 불용어가 나타날 수 있는 위치. 예를 들어, 가정하면a그리고그다음에 따른 중지 단어입니다. 하위 토토:
? 하나 ? 2개 : swsw
일치하나 둘그리고하나 둘; 둘 다 교체될 예정 으로swsw.
동의어 토토에는 다음을 인식하는 기능이 있으므로 상태를 기억하고 상호작용해야 하는 문구 파서. 동의어 토토은 이러한 할당을 사용하여 확인합니다. 다음 단어를 처리해야 하는지 아니면 축적을 중지해야 하는지 여부입니다. 는 동의어 토토은 주의 깊게 구성해야 합니다. 예를 들어, 동의어 토토이 다음만 처리하도록 할당된 경우asciiword토큰, 동의어 토토 같은 토토 정의하나 7할 것이다 토큰 유형 이후 작동하지 않습니다.단위아님 동의어 토토에 할당되었습니다.
| 주의 |
|
인덱싱 중에 동의어 토토이 사용되므로 변경 사항이 있으면 동의어 토토의 매개변수에서요구재인덱싱 중입니다. 에 대한 대부분의 다른 토토 유형은 다음과 같은 작은 변경 사항입니다. 불용어를 추가하거나 제거해도 강제로 실행되지는 않습니다. 다시 색인을 생성하는 중입니다. |
새 동의어 토토을 정의하려면 다음을 사용하십시오.동의어 토토템플릿. 예를 들면:
텍스트 검색 토토 생성 thesaurus_simple(
템플릿 = 동의어 토토,
DictFile = 신화사우루스,
토토 = pg_catalog.english_stem
);
여기:
thesaurus_simple새로운 것입니다 토토 이름
신화사우루스기본 이름입니다 동의어 토토 구성 파일의 (전체 이름은 수$SHAREDIR/tsearch_data/mythesaurus.ths, 어디서$SHAREDIR의미 공유 데이터 디렉터리를 설치합니다.)
pg_catalog.english_stem이다 하위 토토(여기서는 Snowball 영어 형태소 분석기) 동의어 토토 정규화에 사용합니다. 주의할 점은 하위 토토에는 자체 구성이 있습니다(예: 예, 중지 단어), 여기에는 표시되지 않습니다.
이제 동의어 토토 바인딩이 가능합니다thesaurus_simple원하는 것에 구성의 토큰 유형입니다. 예를 들면 다음과 같습니다.
텍스트 검색 구성 변경 러시아어
asciiword, asciihword, hword_asciipart에 대한 매핑 변경
동의어 토토_simple;
간단한 천문학 동의어 토토을 생각해 보세요.thesaurus_astro, 여기에는 일부가 포함되어 있습니다. 천문학적 단어 조합:
초신성 별: sn 게 성운 : 게
아래에서는 토토을 생성하고 일부 토큰 유형을 천문학 동의어 토토 및 영어 형태소 분석기:
텍스트 검색 토토 생성 thesaurus_astro(
템플릿 = 동의어 토토,
DictFile = thesaurus_astro,
토토 = english_stem
);
텍스트 검색 구성 변경 러시아어
asciiword, asciihword, hword_asciipart에 대한 매핑 변경
WITH thesaurus_astro, english_stem;
이제 우리는 그것이 어떻게 작동하는지 볼 수 있습니다.ts_lexize테스트에는 그다지 유용하지 않습니다.
동의어 토토은 입력을 단일 토큰으로 처리하기 때문입니다.
대신에 우리는plainto_tsquery그리고to_tsVector입력이 중단될 것입니다.
문자열을 여러 토큰으로 변환:
SELECT plainto_tsquery('초신성별');
plainto_tsquery
-----------------
'sn'
SELECT to_tsVector('초신성');
to_ts벡터
-------------
'sn':1
원칙적으로 다음을 사용할 수 있습니다.to_tsquery인수를 인용하는 경우:
SELECT to_tsquery('''초신성''');
to_tsquery
------------
'sn'
알아두세요초신성별일치초신성별에thesaurus_astro우리가 지정했기 때문에english_stem스머머 동의어 토토 정의. 형태소 분석기가 다음을 제거했습니다.e그리고s.
원래 문구와 대체 문구를 색인화하려면, 정의의 오른쪽 부분에 포함시키세요.
초신성 별 : sn 초신성 별
SELECT plainto_tsquery('초신성별');
plainto_tsquery
----------------
'sn' & '초신성' & '별'
그Ispell토토 템플릿 지원형태학적 토토, 이는 다양한 언어를 정규화할 수 있습니다. 같은 어휘로 단어의 형태. 예를 들어 영어Ispell토토이 일치할 수 있음 검색어의 모든 어형변화 및 활용형은행, 예:뱅킹, 뱅킹됨, 은행, 은행'및은행.
표준포스트그레SQL배포에는 아무것도 포함되지 않습니다.Ispell구성 파일. 토토 다양한 언어에 대한 정보는 다음에서 제공됩니다.Ispell. 또한 좀 더 현대적인 토토 파일 형식이 지원됩니다 —MySpell(OO < 2.0.1) 및Hunspell(OO = 2.0.2). 큰 목록 토토은 다음에서 이용 가능합니다.오픈오피스 위키.
만들려면Ispell토토, 내장을 사용하세요ispell템플릿을 만들고 여러 매개변수를 지정합니다.
텍스트 검색 토토 생성 english_ispell(
템플릿 = ispell,
DictFile = 영어,
AffFile = 영어,
StopWords = 영어
);
여기,딕트파일, AffFile및불용어토토의 기본 이름, 접사 및 불용어 파일. 불용어 파일의 형식은 동일합니다. 위에 설명된간단한토토 유형. 다른 파일의 형식은 지정되지 않았습니다. 여기에 있지만 위에서 언급한 웹사이트에서 사용할 수 있습니다.
Ispell 토토은 일반적으로 제한된 세트의 따라서 그 뒤에는 더 넓은 범위의 단어가 와야 합니다. 토토; 예를 들어 Snowball 토토이 있습니다. 모든 것을 인식합니다.
Ispell 토토은 복합어 분리를 지원합니다; 에 유용한 기능. 첨부 파일은 다음을 지정해야 합니다. 를 사용하는 특수 플래그복합어 통제됨할 수 있는 토토 단어를 표시하는 문 화합물 형성에 참여:
복합어 제어 z
다음은 노르웨이어에 대한 몇 가지 예입니다:
SELECT ts_lexize('norwegian_ispell', 'overbulzonterningpakkmesterassistant');
오버,불종,터닝,팩,메스터,어시스턴트
참고: MySpell복합어는 지원하지 않습니다.Hunspell정교한 지원 기능을 갖추고 있습니다. 복합어. 현재,토토기본적인 것만 구현합니다. Hunspell의 복합어 연산.
그눈덩이토토 템플릿은 다음의 발명가인 Martin Porter의 프로젝트를 기반으로 합니다. 영어에 대한 인기 있는 포터의 형태소 분석 알고리즘 언어. Snowball은 이제 다양한 형태의 형태소 분석 알고리즘을 제공합니다. 언어(참조눈덩이 사이트자세한 정보는). 각 알고리즘 단어의 공통 변형 형태를 다음으로 줄이는 방법을 이해합니다. 해당 언어 내의 기본 또는 어간, 철자법입니다. 눈덩이 토토에는 가 필요합니다.언어사용할 형태소 분석기를 식별하는 매개변수이며 선택적으로 다음을 수행할 수 있습니다. 지정하다불용어그 파일 이름 제거할 단어 목록을 제공합니다. (포스트그레SQL의 표준 불용어 목록은 다음과 같습니다. Snowball 프로젝트에서도 제공됩니다.) 예를 들어 다음이 있습니다. 다음과 같은 내장 정의가 있습니다.
텍스트 검색 토토 생성 english_stem(
템플릿 = 눈덩이,
언어 = 영어,
StopWords = 영어
);
불용어 파일 형식은 이미와 동일합니다 설명했습니다.
A 눈덩이토토 단순화할 수 있는지 여부에 관계없이 모든 것을 인식합니다. 그 단어는 토토의 맨 마지막에 위치해야 합니다. 목록. 다른 토토보다 먼저 갖는 것은 쓸모가 없습니다 토큰은 다음 토큰으로 절대 전달되지 않기 때문입니다. 토토.