Postgresql全文搜索捷克语言(无默认语言配置)
我正在尝试设置全文搜索捷克语。我有点困惑,因为我看到tsearch_data
文件夹中有一些cs_cz.affix
和cs_cz.dict
文件,但没有捷克语配置(它可能没有与Postgres一起发货)。Postgresql全文搜索捷克语言(无默认语言配置)
所以我应该创建一个?我必须创建/配置哪些dics?有没有捷克语言的一些支持? 我应该使用所有可能的字迹吗? (Synonym Dictionary, Thesaurus Dictionary, Ispell Dictionary, Snowball Dictionary
)
我能够创建捷克配置为ispell
字典,它工作正常,芽我不知道它是否足够(只是ispell配置)。
非常感谢我试图读取https://www.postgresql.org/docs/9.5/static/textsearch.html但我有点困惑。
我从来没有尝试过,但只要您准备好从源代码编译PostgreSQL,您应该可以创建一个捷克雪球词干分析器。
有一个在src/backend/snowball/README
一个解释:
的文件下
src/backend/snowball/libstemmer/
和src/include/snowball/libstemmer/
都直接取自他们的libstemmer_c 分配,只有文件包含的一些小的调整。注意 大多数这些文件实际上是派生文件,而不是主源。 主要来源是Snowball语言,并可通过 与Snowball项目的Snowball-to-C编译器一起使用。我们选择 在PostgreSQL发行版中包含派生文件,因为大多数 安装不会提供可用的Snowball编译器。要更新一个新的雪球
libstemmer_c
分布PostgreSQL的来源:由"header.h"
复制
*.c
文件libstemmer_c/src_c/
到src/backend/snowball/libstemmer
与更换"../runtime/header.h"
,例如for f in libstemmer_c/src_c/*.c do sed 's|\.\./runtime/header\.h|header.h|' $f >libstemmer/`basename $f` done
(或者,如果您从主Snowball重新生成stemmer文件个来源,只是省略从雪球编译器开关
"-r ../runtime"
。)复制
*.c
文件libstemmer_c/runtime/
到src/backend/snowball/libstemmer
,并对其进行编辑,以去除直接夹杂系统头的 如<stdio.h>
–他们应该只包括"header.h"
。 (这去除可以避免在某些平台上,其中<stdio.h>
是largefile编译选项敏感的可移植性问题。)复制
*.h
文件libstemmer_c/src_c/
和libstemmer_c/runtime/
至src/include/snowball/libstemmer
。在撰写本文时,头文件 不需要任何更改。检查是否添加或删除了任何stemmer模块。如果是这样,编辑 的
OBJS
列表Makefile
的#include
的在dict_snowball.c
列表,并在dict_snowball.c
的stemmer_modules[]
表。
stopwords/
中的各种停用字词文件必须单独从snowball.tartarus.org网站上的页面下载 。 小心这些文件必须以UTF-8编码存储。
现在有可用here捷克雪球词干,这是该项目做出了贡献。没有可用的停用词字典,但我相信你可以找到一个或自己创建一个词典。
真正的工作是安装Snowball并使用Snowball-to-C编译器创建C和头文件以添加到PostgreSQL源文件中。 这些文件应该保持稳定,所以升级到新的PostgreSQL版本应该不会很困难。
如果您愿意完成这项工作,但不想每次修补PostgreSQL并从源代码构建它,那么您也可以考虑向PostgreSQL提交补丁。只要stemmer运行良好,我不认为你会有很大的阻力(但补丁提交过程仍然很乏味)。
感谢您的信息! – wilima
我按照指导原则做了这个提交(又名补丁):[postgres_snowball_czech](https://github.com/datlowe/postgres_snowball_czech/commit/4363325f719a463fce04c04cbcdcc7e625cdbca5)派生的'docker'图像可以在这里找到:https:// github .com/datlowe/postgres-pgq-tsearch-czech – dedek
https://wiki.postgresql.org/wiki/Submitting_a_Patch –