F.46. UNCENCER - Diacritics를 제거하는 텍스트 검색 토토 캔#

Unaccent는 Lexemes에서 악센트 (Diacritic Signs)를 제거하는 텍스트 검색 토토 캔입니다. 필터링 토토 캔으로, 토토 캔의 정상적인 동작과 달리 출력이 항상 다음 토토 캔 (있는 경우)으로 전달됩니다. 이를 통해 전체 텍스트 검색을위한 악센트 감민 처리가 가능합니다.

현재의 구현Unaccent정상화 토토 캔으로 사용할 수 없습니다.THESAURUS토토 캔.

이 모듈이 고려됩니다신뢰할 수있는Create현재 데이터베이스의 권한.

F.46.1. 구성#

anUnaccent토토 캔은 다음 옵션을 수락합니다.

  • 규칙는 번역 규칙 목록을 포함하는 파일의 기본 이름입니다. 이 파일은에 저장해야합니다.$ sharedir/tsearch_data/(where$ sharedir의미postgresql설치의 공유 데이터 디렉토리). 그 이름은 끝나야합니다.RULES(규칙매개 변수).

규칙 파일에는 다음 형식이 있습니다.

  • 각 줄은 하나의 번역 규칙을 나타냅니다. 첫 번째는 두 번째로 번역됩니다. 예를 들어,

    à a
    Á a
    Â a
    Â a
    ä a
    Å a
    Æ ae

    두 문자는 공백으로 분리되어야하며, 라인의 선두 또는 후행 흰색 스페이스가 무시됩니다.

  • 대안 적으로, 한 문자 만 줄에 주어지면 해당 문자의 인스턴스가 삭제됩니다. 이것은 악센트가 별도의 문자로 표시되는 언어에 유용합니다.

  • 실제로, 각캐릭터whitespace를 포함하지 않는 문자열 일 수 있으므로UnaccentDiacritic 제거 외에 다른 종류의 기판 치환에 토토 캔을 사용할 수 있습니다.

  • 숫자 기호와 같은 일부 문자는 번역 규칙에 공백이 필요할 수 있습니다. 이 경우 번역 된 문자 주변에서 이중 인용문을 사용할 수 있습니다. 번역 된 캐릭터에 하나를 포함시킬 때 두 번째 이중 견적으로 이중 견적을 피해야합니다. 예를 들어:

    ¼ "1/4"
    ½ "1/2"
    ¾ "3/4"
    "" "" "
    ” "" "" "
  • 다른 것과 마찬가지로PostgreSQL텍스트 검색 구성 파일, 규칙 파일은 UTF-8 인코딩에 저장해야합니다. 데이터는로드시 현재 데이터베이스의 인코딩으로 자동으로 변환됩니다. 번식 할 수없는 문자가 포함 된 모든 줄은 조용히 무시되므로 규칙 파일은 현재 인코딩에 적용 할 수없는 규칙을 포함 할 수 있습니다.

대부분의 유럽 언어에 직접 유용한보다 완전한 예는 찾을 수 있습니다.Unaccent.rules,$ sharedir/tsearch_data/언제Unaccent모듈이 설치되었습니다. 이 규칙 파일은 악센트가있는 문자를 악센트가없는 동일한 문자로 변환하며, 동등한 일련의 간단한 문자 (예 : Æ에서 Ae)로 인대를 확장합니다..

F.46.2. 용법#

설치Unaccent확장자 텍스트 검색 템플릿을 만듭니다unaccent및 토토 캔Unaccent기준. 그만큼unaccentDictionary는 기본 매개 변수 설정이 있습니다규칙 = 'unccent', 이로 인해 표준으로 즉시 사용할 수 있습니다Unaccent.rules파일. 원한다면 매개 변수를 변경할 수 있습니다 (예 :

mydb =# Alter Text 검색 사전 Unaccent (Rules = 'my_rules');

또는 템플릿을 기반으로 새로운 토토 캔 생성.

토토 캔을 테스트하려면 시도 할 수 있습니다 :

mydb =# ts_lexize ( 'unccent', 'hôtel');
 ts_lexize
----------
 호텔

삽입하는 방법을 보여주는 예가 있습니다Unaccent텍스트 검색 구성으로의 토토 캔 :

mydb =# 텍스트 검색 구성 fr (copy = french);
mydb =# 텍스트 검색 구성 fr
        hword, hword_part, word의 Alter 매핑
        비한이없는 프랑스어;
mydb =# select to_tsvector ( 'fr', 'hôtels de la mer');
    to_tsvector
--------------------
 '호텔': 1 'mer': 4
(1 줄)

mydb =# select to_tsvector ( 'fr', 'hôtel de la mer') @@ to_tsquery ( 'fr', 'Hotels');
 ?열?
---------
 티
(1 줄)

mydb =# select ts_headline ( 'fr', 'hôtel de la mer', to_tsquery ( 'fr', 'Hotels'));
      ts_headline
-------------------------
 <b Hôtel </b de la mer
(1 행)

F.46.3. 기능#

theUnaccent ()함수는 주어진 문자열에서 액센트 (diacritic signs)를 제거합니다. 기본적으로 래퍼Unaccent-유형 토토 캔, 그러나 일반 텍스트 검색 컨텍스트 외부에서 사용할 수 있습니다.

uncent ([Dictionary RegDictionary, ]String 텍스트) 반환텍스트

Dictionary인수가 생략되고, 텍스트 검색 사전이라는uncent|Unaccent ()함수 자체가 사용됩니다.

예 :

Unaccent를 선택하십시오 ( 'Unaccent', 'Hôtel');
Unaccent를 선택하십시오 ( 'Hôtel');

정정 제출

문서에 올바른 것이 없다면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면