Postgresql全文搜索捷克语言(无默认语言配置)

问题描述:

我正在尝试设置全文搜索捷克语。我有点困惑,因为我看到tsearch_data文件夹中有一些cs_cz.affixcs_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"

  1. 复制*.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"。)

  2. 复制*.c文件libstemmer_c/runtime/src/backend/snowball/libstemmer,并对其进行编辑,以去除直接夹杂系统头的 如<stdio.h> –他们应该只包括"header.h"。 (这去除可以避免在某些平台上,其中<stdio.h> 是largefile编译选项敏感的可移植性问题。)

  3. 复制*.h文件libstemmer_c/src_c/libstemmer_c/runtime/src/include/snowball/libstemmer。在撰写本文时,头文件 不需要任何更改。

  4. 检查是否添加或删除了任何stemmer模块。如果是这样,编辑 的OBJS列表Makefile#include的在dict_snowball.c列表,并在dict_snowball.cstemmer_modules[]表。

  5. stopwords/中的各种停用字词文件必须单独从snowball.tartarus.org网站上的页面下载 。 小心这些文件必须以UTF-8编码存储。

现在有可用here捷克雪球词干,这是该项目做出了贡献。没有可用的停用词字典,但我相信你可以找到一个或自己创建一个词典。

真正的工作是安装Snowball并使用Snowball-to-C编译器创建C和头文件以添加到PostgreSQL源文件中。 这些文件应该保持稳定,所以升级到新的PostgreSQL版本应该不会很困难。

如果您愿意完成这项工作,但不想每次修补PostgreSQL并从源代码构建它,那么您也可以考虑向PostgreSQL提交补丁。只要stemmer运行良好,我不认为你会有很大的阻力(但补丁提交过程仍然很乏味)。

+1

感谢您的信息! – wilima

+0

我按照指导原则做了这个提交(又名补丁):[postgres_snowball_czech](https://github.com/datlowe/postgres_snowball_czech/commit/4363325f719a463fce04c04cbcdcc7e625cdbca5)派生的'docker'图像可以在这里找到:https:// github .com/datlowe/postgres-pgq-tsearch-czech – dedek

+0

https://wiki.postgresql.org/wiki/Submitting_a_Patch –