Hspell을 기반으로 히브리어 텍스트를위한 전체 텍스트 검색 사전 템플릿을 제공하는 간단하고 단순한 PostgreSQL 확장자.
히브리어 언어는 전통적으로 문서 검색 작업을 수행하기가 어려운 것으로 간주됩니다. 그 풍부한 형태는 단어가 한편으로는 매우 많은 양의 변곡을 가지고 있으며, 호모 그래프의 널리 퍼져있는 것은 모호성으로 이어진다는 것을 의미합니다. 이 모든 것이 전체 텍스트 검색 시스템이 히브리어 텍스트를 다룰 때 상자 밖에서 불량 리콜로 어려움을 겪는 경향이 있음을 의미합니다.
pg_hspell 데이터베이스의 내장 된 전체 텍스트 검색 서브 시스템을 사용할 때 이러한 작업에 도움이되는 PostgreSQL 확장자입니다. HSPELL 프로젝트에서 제공하는 사전 및 언어 정보를 사용하여 구성 파이프 라인의 일부로 히브리어 단어를 lemmating으로하는 Postgres 사전 템플릿을 제공합니다.
히브리어 토큰만이 다루어진다. 히브리어 문자를 포함하지 않은 모든 토큰은 인식되지 않으며 구성의 다음 사전으로 전달됩니다.
구성 가능한 중지 단어 목록에 표시되는 히브리어 토큰이 삭제됩니다.
Hspell 사전의 유효한 항목 인 토큰의 경우 가능한 모든 레마가 다른 변형으로 방출됩니다.
다른 모든 토큰은 그대로 방출됩니다.
GNU/Linux 시스템
Postgresql 9.6+- 이전 버전도 작동 할 수 있지만 공식적으로 지원되지 않습니다.
libhspell, --enable-linginfo 구성 플래그 (분포 패키지)로 컴파일 된 Libhspell
현재 pg_hspell 소스 코드에서 구축해야합니다. PostgreSQL 및 Hspell에 대한 개발 지원 파일 (헤더 등)이 있는지 확인하십시오.
빌드 및 설치, 실행 :
$ make install
이것은 현재 경로에서 발견 된 pg_config 의 첫 번째 인스턴스에 의해 결정된 PostGRESQL 설치에 대해 구축되고 설치됩니다. 특정 설치 (또는 경로가 아닌)를 대상으로합니다.
$ make install PG_CONFIG=/path/to/pg_config
확장을 데이터베이스에로드하려면 다음 SQL 명령을 적절히 허가 된 사용자로 실행하십시오.
CREATE EXTENSION pg_hspell; 이것은 현재 스키마에 hspell 이라는 전체 텍스트 사전을 배치하여 묶음의 공통 히브리 정지 단어 목록으로 구성됩니다. 다른 중지 단어 목록 (또는 전혀 없음)으로 사전을 만들려면 다음 SQL 명령과 같은 작업을 수행하십시오.
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
); 다른 모든 텍스트 검색 사전 템플릿과 마찬가지로, 중지 단어 목록은 데이터베이스 서버의 $SHAREDIR/tsearch_data 디렉토리에 저장된 파일이어야하며 .stop Extension이 있어야합니다. 위의 예는 $SHAREDIR/tsearch_data/my_stop_words_file.stop 찾습니다
그런 다음 사전은 PostgreSQL 매뉴얼에 설명 된대로 텍스트 검색 구성에 통합되어야합니다. 이 확장자는 사전 정의 된 구성을 제공하지 않습니다.
hspell 디렉토리 템플릿은 히브리 문자가 포함 된 토큰 만 인식하므로 word , hword 및 hword-part 유형 토큰 (기본 파서를 가정)에 대한 맵핑을 기반으로 사전을 설정하는 것이 좋습니다.
위에서 언급 한 바와 같이, 토큰이 hspell의 사전에 의해 인식 될 때, 가능한 모든 렘마가 방출됩니다 (예 : 단어 הרכבת - רכבת , הרכבה . הרכיב 모두 방출된다). 이것은 리콜에 도움이되지만 물론 정밀도를 상하게 할 수 있습니다. 현재이 확장은 형태 학적 명확성을 수행하지 않습니다. 어쨌든 PostgreSQL의 전체 텍스트 검색 프레임 워크는 사전 템플릿에서 실제로 사용하기가 쉽지 않은 문장 컨텍스트가 필요합니다.
중지 단어 필터링은 입력 토큰 자체에 적용됩니다. 중지 단어 모호성은 특히 히브리어에 문제가 있습니다 (예 :이 블로그 게시물을 참조하십시오). 중지 단어 목록을 만들 때 또는 하나를 사용하려는 경우 고려할 때이를 고려하십시오.
Hspell은 점선 텍스트를 활용할 수 없으며 실제로 그러한 텍스트는 Libhspell과 함께 작동하는 ISO-8859-8 인코딩에서도 표현할 수 없습니다. 현재 Niqqud를 포함하는 토큰은이 사전 템플릿으로 인식되지 않습니다!
점선 텍스트를 처리하는 것이 바람직한 경우, 텍스트를 pg_hspell 사전으로 전달하기 전에 NIQQUD를 제거해야합니다. 이는 비한 모듈에 적합한 규칙 세트를 작성하여 달성 할 수 있습니다. 앞으로 pg_hspell 직접 수행 할 수 있습니다.
PostgreSQL에 포함 된 기본 텍스트 검색 파서는 문자가 구두점으로 간주되는 문자 (즉, 아포스트로피 및 견적 마크)가 단어에 포함시킬 때 그렇게 작용하지 않는 히브리어에 맞는 코너 케이스를 올바르게 처리하지 않습니다. 이러한 사례는 약어 및 약어의 히브리 컴퓨터 텍스트에서 일반적이며 예상대로 토큰 화되지 않을 수 있습니다.
예를 들어:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
이것은 pg_hspell 또는 그 범위 내에서 특정한 것이 아닙니다. 특히 귀찮은 구체적인 사례가 있다면 동의어 사전으로 일할 수 있습니다. PG_ICU_PARSER 확장자가 제공하는 파서를 고려할 수도 있습니다.
pg_hspell 자체는 Mozilla Public License 2.0에 따라 라이센스가 부여됩니다. 포함 된 중지 단어 목록은 Guy Saar가 작성하고 MIT 라이센스에 따라 릴리스 된 https://github.com/fergiemcdowall/stopword에서 추출한 것을 기반으로합니다.