토토 결과은 검색에서 고려해서는 안되는 단어를 제거하는 데 사용됩니다 (단어 중지) 및 to정상화같은 단어의 다른 파생 형식이 일치하도록 단어. 성공적으로 정규화 된 단어를 a라고합니다.lexeme. 검색 품질 향상, 정상화 및 정지 단어 제거 외에도의 크기가 줄어 듭니다.tsvector
문서 표현으로 성능이 향상됩니다. 정규화는 항상 언어 적 의미를 갖지는 않으며 일반적으로 응용 프로그램 의미에 따라 다릅니다.
정규화의 일부 예 :
언어 - Ispell 토토 결과은 입력 단어를 정규화 된 형태로 줄이려고합니다. Stemmer 토토 결과은 단어 결말 제거
url동등한 URL을 일치시키기 위해 위치를 정식화 할 수 있습니다 :
in
http://www.pgsql.ru/db/mw/
in
색상 이름은 16 진수 값으로 대체 될 수 있습니다 (예 :빨간색, 녹색, 파란색, 마젠타 -> FF0000, 00FF00, 0000FF, FF00FF
인덱싱 숫자 인 경우 가능한 숫자의 범위를 줄이기 위해 일부 분수 숫자를 제거 할 수 있습니다.3.14159265359, 3.1415926, 3.14소수점 이후 두 자리 만 유지되면 정규화 후 동일합니다.
토토 결과은 토큰을 입력으로 받아들이고 반환하는 프로그램입니다.
입력 토큰이 토토 결과에 알려진 경우 렉시스 배열 (하나의 토큰이 하나 이상의 lexeme을 생산할 수 있음).
단일 Lexeme과TSL_FILTER
플래그 세트, 원래 토큰을 다음 토토 결과으로 전달할 새 토큰으로 교체하려면 (이를 수행하는 토토 결과은라고합니다.필터링 토토 결과)
토토 결과이 토큰을 알고 있다면 빈 배열이지만 중지 단어입니다
null
토토 결과이 입력 토큰을 인식하지 못하는 경우
postgresql많은 언어에 미리 정의 된 토토 결과을 제공합니다. 사용자 지정 매개 변수로 새로운 토토 결과을 만드는 데 사용할 수있는 몇 가지 토토 결과 정의 된 템플릿이 있습니다.Contrib/
영역postgresql예제 배포.
텍스트 검색 구성은 파서의 출력 토큰을 처리하기 위해 토토 결과 세트와 함께 파서를 바인딩합니다. 파서가 반환 할 수있는 각 토큰 유형의 경우 별도의 토토 결과 목록은 구성에 의해 지정됩니다.null
출력 결과를 결정하고 나머지 토토 결과은 상담되지 않습니다. 그러나 필터링 토토 결과은 주어진 단어를 수정 된 단어로 대체 할 수 있으며, 그 후 후속 토토 결과으로 전달됩니다.
토토 결과 목록을 구성하기위한 일반적인 규칙은 먼저 가장 좁고 가장 구체적인 토토 결과을 먼저 배치하는 것입니다.SnowballStemmer 또는단순
, 모든 것을 인식합니다. 예를 들어 천문학 별 검색 (Astro_en
구성) 토큰 유형을 바인딩 할 수 있습니다asciiword
(ASCII Word) 천문학적 용어의 동의어 토토 결과, 일반 영어 토토 결과 및 A.SnowballEnglish Stemmer :
텍스트 검색 구성 Astro_en
필터링 토토 결과은 쓸모없는 끝을 제외하고 목록의 어느 곳에도 배치 할 수 있습니다. 필터링 토토 결과은 나중 토토 결과의 작업을 단순화하기 위해 단어를 부분적으로 정규화하는 데 유용합니다.Unaccent모듈.
중지 단어는 매우 일반적인 단어이며 거의 모든 문서에 나타나며 차별 값이 없습니다. 따라서 전체 텍스트 검색의 맥락에서 무시할 수 있습니다.a
andthe
이므로 색인에 저장하는 것은 쓸모가 없습니다. 그러나 단어 중지 단어는의 위치에 영향을 미칩니다.tsvector
, 순위에 영향을 미칩니다 :
select to_tsvector ( '영어', '중지 단어 목록에서');
누락 된 위치 1,2,4는 중지 단어 때문입니다. 중지 단어 유무에 관계없이 문서에 대해 계산 된 순위는 매우 다릅니다.
ts_rank_cd (to_tsvector ( '영어', '중지 단어 목록에서'), to_tsquery ( 'list & stop'));
그것은 단어 중지 단어를 취급하는 방법에 따라 다릅니다. 예를 들어,Ispell
토토 결과은 먼저 단어를 정상화 한 다음 중지 단어 목록을 봅니다.Snowball
stemmers는 먼저 중지 단어 목록을 확인합니다. 다른 행동의 이유는 소음을 줄이려는 시도입니다.
the단순
토토 결과 템플릿은 입력 토큰을 소문자로 변환하고 중지 단어 파일에 대해 확인하여 작동합니다. 파일에서 발견되면 빈 배열이 반환되어 토큰을 폐기합니다.
다음은를 사용한 토토 결과 정의의 예입니다.단순
템플릿 :
텍스트 검색 토토 결과 생성 public.simple_dict (
여기,영어
는 중지 단어 파일의 기본 이름입니다. 파일의 이름은입니다.$ sharedir/tsearch_data/el
, 여기서$ sharedir
의미postgresql설치의 공유 데이터 디렉토리, 종종/usr/local/share/postgresql
(사용PG_CONFIG -SHAREDIR
확실하지 않은지 결정하려면). 파일 형식은 단순히 줄 당 단어 목록입니다.
이제 토토 결과을 테스트 할 수 있습니다 :
ts_lexize ( 'public.simple_dict', 'yes');
우리는 또한 반환을 선택할 수 있습니다null
, 중지 단어 파일에 찾을 수없는 경우 하위 기반 단어 대신. 이 동작은 토토 결과을 설정하여 선택됩니다수락
매개 변수 to거짓
. 예제 계속 :
텍스트 검색 토토 결과 Alter Alter Alter.simple_dict (accept = false);
기본 설정의수락
= true
, a 배치하는 것이 유용합니다.단순
토토 결과 목록의 끝에있는 토토 결과. 거꾸로,수락
= 거짓
토토 결과 다음에 하나 이상이있을 때만 유용합니다.
대부분의 토토 결과 유형은 중지 단어의 파일과 같은 구성 파일에 의존합니다. 이 파일필수UTF-8 인코딩에 저장하십시오. 서버로 읽을 때 실제 데이터베이스 인코딩으로 변환됩니다..
일반적으로 데이터베이스 세션은 세션 내에서 처음 사용되는 경우 토토 결과 구성 파일을 한 번만 읽습니다. 구성 파일을 수정하고 기존 세션이 새로운 내용을 선택하도록 강요하려면 AN을 발행하십시오텍스트 검색 토토 결과 변경
토토 결과의 명령. 이것은 A 일 수 있습니다.“더미”실제로 매개 변수 값을 변경하지 않는 업데이트.
이 토토 결과 템플릿은 단어를 동의어로 대체하는 토토 결과을 만드는 데 사용됩니다. 문구는 지원되지 않습니다 (Thesurus 템플릿 사용 (섹션 12.6.4). 동의어 토토 결과은 예를 들어 영어 줄기 토토 결과이 단어를 줄이는 것을 막기 위해 언어 문제를 극복하는 데 사용될 수 있습니다.“파리”to“pari”. 가 충분합니다.파리 파리
동의어 토토 결과에서 줄을 세우고English_stem
토토 결과. 예를 들어:
선택 *에서 ts_debug ( '영어', '파리');
동의어
템플릿은동의어
, 구성 파일의 기본 이름입니다 -my_synonyms
위의 예에서. 파일의 이름은입니다.$ sharedir/tsearch_data/my_synonyms.syn
(where$ sharedir
의미postgresql설치의 공유 데이터 디렉토리). 파일 형식은 대체 할 단어 당 하나의 줄에 불과하며, 단어와 동의어와 함께 공백으로 분리됩니다.
the동의어
템플릿은 선택적 매개 변수도 있습니다Cassensitive
, 기본값거짓
. 언제Cassensitive
is거짓
, 동의어 파일의 단어는 입력 토큰과 마찬가지로 소문자로 접 힙니다. 그 때true
, 단어와 토큰은 소문자로 접히지 않지만 비교됩니다.
별표 (*
)는 구성 파일의 동의어 끝에 배치 할 수 있습니다. 이것은 동의어가 접두사임을 나타냅니다.to_tsvector ()
, 그러나 그것이 사용될 때to_tsquery ()
, 결과는 접두사 매치 마커가있는 쿼리 항목입니다 (참조섹션 12.3.2). 예를 들어,이 항목이에 있다고 가정합니다.$ sharedir/tsearch_data/synonym_sample.syn
:
Postgres pgsql
그러면 우리는 다음 결과를 얻을 것입니다 :
mydb =# 생성 텍스트 검색 토토 결과 syn (template = synonyms = 'synonyfy_sample');
Thesurus 토토 결과 (때로는 약식TZ)는 단어와 문구의 관계, 즉 더 넓은 용어 (에 관한 정보를 포함하는 단어 모음입니다.bt), 좁은 용어 (nt), 선호하는 용어, 선호되지 않은 약관, 관련 약관 등
기본적으로 동의어 토토 결과 토토 결과은 모든 선호되지 않은 모든 용어를 하나의 선호하는 용어로 대체하고 선택적으로 원래 용어를 인덱싱하는 용어를 보존합니다..postgresql'의 동의어 토토 결과 토토 결과의 현재 구현은 추가 된 동의어 토토 결과의 확장입니다문구지원. 시소러스 토토 결과에는 다음 형식의 구성 파일이 필요합니다.
# 이것은 주석입니다
콜론 (:
) 기호는 문구와 교체 사이의 구분 기 역할을합니다.
Thesaurus 토토 결과은 A를 사용합니다.subdictionary(토토 결과 구성에 지정됨)는 문구 일치를 확인하기 전에 입력 텍스트를 정규화하기 위해. 하나의 하위 분할 만 선택할 수 있습니다.*
) 인덱스 된 단어의 시작 부분에서 데이터를 적용하는 것을 건너 뛰기 위해, 그러나 모든 샘플 단어필수부정사에게 알려져 있습니다.
동의어 토토 결과 토토 결과은 입력과 일치하는 여러 문구가 있고 마지막 정의를 사용하여 넥타이가 끊어지면 가장 긴 일치를 선택합니다..
하위 데이터에 의해 인식되는 특정 정지 단어는 지정할 수 없습니다. 대신 사용?
중지 단어가 나타날 수있는 위치를 표시합니다. 예를 들어,를 가정합니다.a
andthe
하위 소설에 따른 중지 단어 :
? 하나 ?
매치하나는 둘
and하나 A Two
; 둘 다 대체SWSW
.
동의어 토토 결과 토토 결과에는 문구를 인식 할 수있는 능력이 있으므로 상태를 기억하고 파서와 상호 작용해야합니다. 동의어 토토 결과 토토 결과은 이러한 과제를 사용하여 다음 단어를 처리하거나 축적을 중지 해야하는지 확인합니다.asciiword
Token, 그런 다음 동의어 토토 결과 토토 결과 정의1 7
토큰 유형 이후로 작동하지 않습니다uint
동의어 토토 결과에 할당되지 않았습니다.
thesuruses는 인덱싱 중에 사용되므로 시소러스 토토 결과의 매개 변수의 변경요구Reindexing. 대부분의 다른 토토 결과 유형의 경우 스톱워드 추가 또는 제거와 같은 작은 변경 사항이 다시 표시되지 않습니다.
새로운 시소러스 토토 결과을 정의하려면 사용하십시오.THESAURUS
템플릿. 예를 들어:
텍스트 검색 토토 결과 생성 Thesaurus_simple (
여기 :
THESAURUS_SIMPLE
새로운 토토 결과의 이름입니다
Mythesaurus
는 동의어 토토 결과 구성 파일의 기본 이름입니다. (전체 이름이 될 것입니다$ sharedir/tsearch_data/mythesaurus.ths
, 여기서$ sharedir
설치 공유 데이터 디렉토리를 의미합니다.)
pg_catalog.english_stem
는 동의어 정규화에 사용하기위한 (여기, 눈덩이 영어 스티머)입니다. 하위 소설에는 자체 구성 (예 : 중지 단어)이 있으며 여기에는 표시되지 않습니다.
이제 동의어 토토 결과에 묶을 수 있습니다THESAURUS_SIMPLE
구성에서 원하는 토큰 유형으로.
변경 텍스트 검색 구성 러시아어
간단한 천문 동의어 토토 결과을 고려Thesaurus_astro
, 여기에는 천문학적 단어 조합이 포함되어 있습니다 :
Supernovae Stars : Sn
아래에서 우리는 토토 결과을 만들고 일부 토큰 유형을 천문학적 시소러스와 영어 stemmer에 바인딩합니다 :
텍스트 검색 토토 결과 생성 Thesaurus_astro (
이제 우리는 그것이 어떻게 작동하는지 알 수 있습니다.ts_lexize
는 입력을 단일 토큰으로 취급하기 때문에 동의어 토토 결과 테스트에 그다지 유용하지 않습니다. 대신 우리는 사용할 수 있습니다Plainto_tsquery
andto_tsvector
입력 문자열을 여러 토큰으로 분해합니다 :
Plainto_tsquery ( 'Supernova Star')를 선택하십시오.
원칙적으로 사용할 수 있습니다to_tsquery
당신이 인용하는 경우 :
select to_tsquery ( '' ''Supernova Star '' ');
Supernova Star
매치Supernovae Stars
inThesaurus_astro
우리는를 지정했기 때문에English_stem
동의어 토토 결과 정의에서의 체육관. stemmer가를 제거했습니다.e
ands
.
원래 문구와 대체물을 색인하려면 정의의 오른쪽 부분에 포함 시키십시오.
Supernovae Stars : SN 초신성 스타
theIspell토토 결과 템플릿 지원형태 학적 토토 결과,이 단어의 여러 언어 형태를 동일한 lexeme로 정상화 할 수 있습니다. 예를 들어, 영어Ispell토토 결과은 검색어 용어의 모든 감소와 결합과 일치 할 수 있습니다은행
, 예 :뱅킹
, 은행
, 은행
, Banks '
및Bank 's
.
표준postgresql분포는 포함되지 않습니다Ispell구성 파일. 많은 언어에 대한 토토 결과은에서 구할 수 있습니다.Ispell. 또한 더 현대적인 토토 결과 파일 형식이 지원됩니다 -MySpell(oo <2.0.1) 및Hunspell(oo> = 2.0.2). 토토 결과 목록은에서 사용할 수 있습니다.OpenOffice Wiki.
생성Ispell토토 결과을 수행하는 단계 :
토토 결과 구성 파일 다운로드.OpenOffice확장 파일이.oxt
확장. 추출이 필요합니다.aff
and.dic
파일, 연장 변경.affix
and.dict
. 일부 토토 결과 파일의 경우 문자가 UTF-8 인코딩으로 명령으로 인코딩 (예 : 노르웨이 언어 토토 결과의 경우)으로 변환해야합니다. :
iconv -f iso_8859-1 -t utf -8 -o nn_no.affix nn_no.aff
파일 복사$ sharedir/tsearch_data
디렉토리
다음 명령과 함께 PostgreSQL에 파일을로드하십시오 :
텍스트 검색 토토 결과 생성 English_HunSpell (
여기,Dictfile
, Afffile
및Stopwords
토토 결과, 부착 및 스톱워드의 기본 이름을 지정합니다. STOP-WORDS 파일은 위에서 설명한 동일한 형식을 가지고 있습니다.단순
토토 결과 유형. 다른 파일의 형식은 여기에 지정되지 않았지만 위에서 언급 한 웹 사이트에서 사용할 수 있습니다.
Ispell 토토 결과은 일반적으로 제한된 단어 세트를 인식하므로 다른 더 넓은 토토 결과이 뒤 따릅니다. 예를 들어, 모든 것을 인식하는 눈덩이 토토 결과.
the.affix
파일Ispell다음 구조가 있습니다.
접두사
and the.dict
파일은 다음 구조를 가지고 있습니다.
랩스/adgrs
형식.dict
파일은 :
Basic_form/affix_class_name
in.affix
파일 모든 부착 플래그는 다음 형식으로 설명됩니다.
조건> [-stripping_letters,] adding_affix
여기서 조건은 일반 표현식 형식과 유사한 형식을 갖습니다. 그룹화를 사용할 수 있습니다[...]
and[^...]
. 예를 들어,[aeiou] y
단어의 마지막 문자가임을 의미합니다."y"
그리고 두 번째 편지는입니다."A"
, "E"
, "I"
, "O"
또는"u"
. [^ey]
마지막 문자는 없음을 의미합니다"E"
NOR"y"
.
Ispell 토토 결과은 화합물 단어 분할을 지원합니다. 유용한 기능.복합 단어 제어
복합 형성에 참여할 수있는 토토 결과 단어를 표시하는 진술 :
복합 단어 제어 z
노르웨이어 언어에 대한 몇 가지 예는 다음과 같습니다.
ts_lexize ( 'Norwegian_ispell', 'OverBuljongterningPakkMesterissistent');
MySpell형식은의 하위 집합입니다.Hunspell. 그만큼.affix
파일Hunspell다음 구조가 있습니다.
pfx a y 1
부착 클래스의 첫 번째 줄은 헤더입니다. 부착 규칙의 필드는 헤더 다음에 나열됩니다.
매개 변수 이름 (PFX 또는 SFX)
플래그 (auttix 클래스의 이름)
단어의 시작 (접두사) 또는 끝 (접미사)에서 문자를 벗기는 문자
부착 추가
정규식 형식과 유사한 형식을 갖는 조건
the.dict
파일처럼.dict
파일Ispell:
Larder/m
MySpell복합 단어를 지원하지 않습니다.Hunspell복합 단어에 대한 정교한 지원이 있습니다. 현재,postgresqlHunspell의 기본 복합 단어 작업 만 구현합니다.
theSnowballDictionary Template는 영어에 대한 인기있는 Porter 's Stemming 알고리즘의 발명가 인 Martin Porter의 프로젝트를 기반으로합니다. Snowball은 이제 많은 언어에 대한 줄기 알고리즘을 제공합니다 ( 참조스노우 볼 사이트자세한 내용은). 각 알고리즘은 공통 변형 형태의 단어를 언어 내에서 철자로 줄이는 방법을 이해합니다.언어
사용할 수있는 스템머를 식별하는 매개 변수 및 선택적으로 A를 지정할 수 있습니다Stopword
제거 할 단어 목록을 제공하는 파일 이름. (postgresql의 표준 스톱워드 목록도 Snowball Project에서 제공합니다.) 예를 들어,에 해당하는 내장 정의가 있습니다.
텍스트 검색 토토 결과 생성 English_stem (
Stopword 파일 형식은 이미 설명한 것과 동일합니다.
A Snowball토토 결과은 단어를 단순화 할 수 있는지 여부에 관계없이 모든 것을 인식하므로 토토 결과 목록의 끝에 배치해야합니다. 토큰이 다음 토토 결과으로 전달하지 않기 때문에 다른 토토 결과보다 먼저 그것을 갖는 것은 쓸모가 없습니다..
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면