배트맨 토토은 검색에서 고려해서는 안되는 단어를 제거하는 데 사용됩니다 (단어 중지) 및정상화같은 단어의 다른 파생 형식이 일치하도록 단어. 성공적으로 정규화 된 단어를 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을 생산할 수 있음)
단일 lexemeTSL_FILTER
플래그 세트, 원래 토큰을 다음 배트맨 토토으로 전달할 새 토큰으로 교체하려면 (이를 수행하는 배트맨 토토은라고합니다.필터링 배트맨 토토)
배트맨 토토이 토큰을 알고있는 경우 빈 배열이지만 중지 단어입니다
null
배트맨 토토이 입력 토큰을 인식하지 못하는 경우
PostgreSQL많은 언어에 미리 정의 된 배트맨 토토을 제공합니다. 사용자 지정 매개 변수로 새로운 배트맨 토토을 만드는 데 사용할 수있는 몇 가지 배트맨 토토 정의 된 템플릿이 있습니다.Contrib/
영역PostgreSQL예제 배포.
텍스트 검색 구성은 파서의 출력 토큰을 처리하기 위해 배트맨 토토 세트와 함께 구문 분석기를 바인딩합니다. 파서가 반환 할 수있는 각 토큰 유형의 경우 별도의 배트맨 토토 목록은 구성에 의해 지정됩니다.null
출력 결과를 결정하고 나머지 배트맨 토토은 상담되지 않습니다. 그러나 필터링 배트맨 토토은 주어진 단어를 수정 된 단어로 대체 할 수 있으며, 그 후 후속 배트맨 토토으로 전달됩니다.
배트맨 토토 목록을 구성하기위한 일반적인 규칙은 먼저 가장 좁고 가장 구체적인 배트맨 토토을 먼저 배치하는 것입니다.SnowballStemmer 또는단순
, 모든 것을 인식합니다. 예를 들어 천문학 별 검색 (Astro_en
구성) 토큰 유형을 바인딩 할 수 있습니다asciiword
(ASCII Word) 천문학적 용어의 동의어 배트맨 토토, 일반 영어 배트맨 토토 및 A.SnowballEnglish Stemmer :
텍스트 검색 구성 Astro_en
필터링 배트맨 토토은 쓸모없는 곳을 제외하고 목록의 어느 곳에도 배치 할 수 있습니다. 필터링 배트맨 토토은 나중 배트맨 토토의 작업을 단순화하기 위해 단어를 부분적으로 정규화하는 데 유용합니다.Unaccent모듈.
중지 단어는 매우 일반적이며 거의 모든 문서에 나타나며 차별 값이 없습니다. 따라서 전체 텍스트 검색의 맥락에서 무시할 수 있습니다.a
및the
이므로 색인에 저장하는 것은 쓸모가 없습니다. 그러나 단어 중지 단어는의 위치에 영향을 미칩니다.TSVECTOR
, 순위에 영향을 미칩니다 :
select to_tsvector ( '영어', '중지 단어 목록에서');
누락 된 위치 1,2,4는 중지 단어 때문입니다. 중지 단어 유무에 관계없이 문서에 대해 계산 된 순위는 매우 다릅니다.
select ts_rank_cd (to_tsvector ( '영어', '중지 단어 목록에서'), to_tsquery ( 'list & stop'));
그것은 특정 배트맨 토토에 달려 있습니다. 예를 들어,Ispell
Dictionaries는 먼저 단어를 정상화 한 다음 중지 단어 목록을 봅니다.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 Text Search Dictionary public.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');
ATSAURUS 배트맨 토토 (때로는 약식TZ)는 단어와 문구의 관계에 대한 정보, 즉 더 넓은 용어 (에 대한 정보를 포함하는 단어 모음입니다.bt), 좁은 용어 (nt), 선호하는 용어, 선호되지 않은 약관, 관련 약관 등
기본적으로 동의어 배트맨 토토 배트맨 토토은 모든 선호되지 않은 모든 용어를 하나의 선호하는 용어로 대체하고 선택적으로 원래 용어를 인덱싱하는 용어를 보존합니다..PostgreSQL의 현재 시소러스 배트맨 토토의 구현은 추가 된 동의어 배트맨 토토의 확장입니다문구지원. 시소러스 배트맨 토토에는 다음 형식의 구성 파일이 필요합니다.
# 이것은 주석입니다
콜론 (:
) 기호는 문구와 교체의 구분기로 작용합니다.
ATSAURUS 배트맨 토토은 a를 사용합니다.subdictionary(배트맨 토토 구성에 지정됨)는 문구 일치를 확인하기 전에 입력 텍스트를 정규화하기 위해. 하나의 하위 분할 만 선택할 수 있습니다.*
) 인덱스 된 단어의 시작 부분에서 하위 소설을 적용하는 것을 건너 뛰지 만 모든 샘플 단어필수하위 소설에 알려져 있습니다.
동의어 배트맨 토토 배트맨 토토은 입력과 일치하는 여러 문구가있는 경우 가장 긴 일치를 선택하고 마지막 정의를 사용하여 넥타이가 끊어집니다..
하위 소설에 의해 인식되는 특정 정지 단어를 지정할 수 없습니다. 대신 사용?
중지 단어가 나타날 수있는 위치를 표시합니다. 예를 들어,를 가정합니다.a
및the
하위 데이터에 따른 중지 단어 :
? 하나 ?
매치A 중 하나
및하나 A Two
; 둘 다 대체SWSW
.
동의어 배트맨 토토 배트맨 토토에는 문구를 인식 할 수있는 능력이 있으므로 상태를 기억하고 구문 분석기와 상호 작용해야합니다. 동의어 배트맨 토토 배트맨 토토은 이러한 과제를 사용하여 다음 단어를 처리하거나 축적을 중지 해야하는지 확인합니다.asciiword
Token, 그런 다음 동의어 배트맨 토토 정의와 같은One 7
토큰 유형 이후로 작동하지 않습니다uint
동의어 배트맨 토토에 할당되지 않았습니다.
thesuruses는 인덱싱 중에 사용되므로 시소러스 배트맨 토토의 매개 변수의 변경요구다시 한입. 대부분의 다른 배트맨 토토 유형의 경우 스톱워드 추가 또는 제거와 같은 작은 변경 사항이 다시 표시되지 않습니다.
새로운 시소러스 배트맨 토토을 정의하려면 사용하십시오.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
및to_tsvector
입력 문자열을 여러 토큰으로 분해합니다 :
Plainto_tsquery ( 'Supernova Star')를 선택합니다.
원칙적으로 사용할 수 있습니다to_tsquery
당신이 인용한다면 :
select to_tsquery ( '' 'Supernova Star' '');
Supernova Star
매치Supernovae Stars
inThesaurus_astro
우리가 지정했기 때문에English_stem
동의어 배트맨 토토 정의에있는 스티머. stemmer가를 제거했습니다.e
및s
.
원래 문구와 대체물을 색인하려면 정의의 오른쪽 부분에 포함 시키십시오.
Supernovae Stars : SN 초신성 스타
theIspell배트맨 토토 템플릿 지원형태 학적 배트맨 토토,이 단어의 여러 언어 형태를 동일한 lexeme로 정상화 할 수 있습니다. 예를 들어, 영어Ispell배트맨 토토은 검색어의 모든 감소와 공액과 일치 할 수 있습니다은행
, 예 :뱅킹
, 은행
, 은행
, Banks '
및은행
.
표준PostgreSQL분포는 포함되지 않습니다Ispell구성 파일. 많은 언어에 대한 배트맨 토토은에서 구할 수 있습니다.Ispell. 또한 더 현대적인 배트맨 토토 파일 형식이 지원됩니다 -MySpell(oo <2.0.1) 및Hunspell(oo> = 2.0.2). 배트맨 토토 목록은에서 사용할 수 있습니다.OpenOffice Wiki.
생성Ispell배트맨 토토은 다음 단계를 수행합니다.
배트맨 토토 구성 파일 다운로드.OpenOffice확장 파일이.oxt
확장. 추출이 필요합니다.aff
및.dic
파일, 연장 변경.affix
및.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
에서.affix
파일 모든 부착 플래그는 다음 형식으로 설명됩니다.
조건> [-stripping_letters,] adding_affix
여기서 조건은 일반 표현식 형식과 유사한 형식을 갖습니다. 그룹화를 사용할 수 있습니다[...]
및[^...]
. 예를 들어,[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의 기본 복합 단어 작업 만 구현합니다.
theSnowball37015_37222스노우 볼 사이트자세한 내용은). 각 알고리즘은 공통 변형 형태의 단어를 언어 내에서 철자로 줄이는 방법을 이해합니다.언어
사용할 수있는 스템머를 식별하는 매개 변수 및 선택적으로 A를 지정할 수 있습니다Stopword
제거 할 단어 목록을 제공하는 파일 이름. (PostgreSQL의 표준 스톱워드 목록도 Snowball Project에서 제공합니다.) 예를 들어,에 해당하는 내장 정의가 있습니다.
텍스트 검색 배트맨 토토 생성 English_stem (
Stopword 파일 형식은 이미 설명한 것과 동일합니다.
A Snowball배트맨 토토은 단어를 단순화 할 수 있는지 여부에 관계없이 모든 것을 인식하므로 배트맨 토토 목록의 끝에 배치해야합니다. 토큰이 다음 배트맨 토토으로 전달하지 않기 때문에 다른 배트맨 토토보다 먼저 그것을 갖는 것은 쓸모가 없습니다..
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면