我正在尝试设置捷克语的全文搜索。我有点困惑,因为我在cs_cz.affix
文件夹中看到了一些cs_cz.dict
和tsearch_data
文件,但没有捷克语配置(它可能不会随Postgres一起提供)。
我应该创建一个吗?我必须创建/配置哪些dics?对捷克语有什么支持吗?
我应该使用所有可能的决定吗? (Synonym Dictionary, Thesaurus Dictionary, Ispell Dictionary, Snowball Dictionary
)
我可以为ispell
dict创建捷克语配置,它运行正常,我不确定它是否足够(只是ispell配置)。
非常感谢我试着阅读https://www.postgresql.org/docs/9.5/static/textsearch.html,但我有点困惑。
答案 0 :(得分:3)
我从未尝试过,但只要您准备好从源代码编译PostgreSQL,您就应该能够创建一个捷克雪球词干分析器。
src/backend/snowball/README
中有一个解释:
src/backend/snowball/libstemmer/
和src/include/snowball/libstemmer/
下的文件libstemmer_c
直接来自他们的libstemmer_c 分布,只对文件夹杂物进行一些微调。注意 大多数这些文件实际上是派生文件,而不是主源文件。 主要来源是Snowball语言,可以随时使用 使用Snowball项目中的Snowball-to-C编译器。我们选择 包括PostgreSQL发行版中的派生文件,因为大多数 安装不会提供Snowball编译器。从新的Snowball
*.c
更新PostgreSQL源代码 分布:
将
libstemmer_c/src_c/
中的src/backend/snowball/libstemmer
个文件复制到"../runtime/header.h"
将"header.h"
替换为for f in libstemmer_c/src_c/*.c do sed 's|\.\./runtime/header\.h|header.h|' $f >libstemmer/`basename $f` done
,例如"-r ../runtime"
(或者,如果您从主Snowball重建词干分析器文件 来源,只需从Snowball编译器开关中省略
*.c
。)将
libstemmer_c/runtime/
中的src/backend/snowball/libstemmer
个文件复制到<stdio.h>
,并修改它们以删除直接包含 诸如"header.h"
之类的系统标题 - 它们应该只包含<stdio.h>
。 (此删除可避免*.h
某些平台上的可移植性问题 对大文件编译选项很敏感。)复制
libstemmer_c/src_c/
和libstemmer_c/runtime/
中的src/include/snowball/libstemmer
个文件 到OBJS
。在写这个头文件 不需要任何更改。检查是否添加或删除了任何词干分析器模块。如果是,请编辑
Makefile
中的#include
列表,dict_snowball.c
中的stemmer_modules[]
列表,以及dict_snowball.c
中的stopwords/
表。- 醇>
必须下载
dynamic responseObject = JsonConvert.DeserializeObject("{\"status\":\"1\"...");
中的各种停用词文件 单独来自snowball.tartarus.org网站上的网页。 请注意,这些文件必须以UTF-8编码存储。
现在有一个捷克雪球提取器here,它为该项目做出了贡献。没有停用词词典,但我相信你可以找到一个或自己创建一个。
真正的工作是安装Snowball并使用Snowball-to-C编译器创建要添加到PostgreSQL源的C和头文件。 这些文件应保持稳定,因此升级到新的PostgreSQL版本并不困难。
如果你愿意做这项工作,但又不想修补PostgreSQL并且每次都从源代码构建它,你也可以考虑向PostgreSQL提交一个补丁。只要割线器工作正常,我就不会期望你会有很多阻力(但补丁提交过程仍然很乏味)。