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

Postgresql捷克语全文搜索(无默认语言配置),postgresql,full-text-search,Postgresql,Full Text Search,我正在尝试设置捷克语的全文搜索。我有点困惑,因为我在tsearch_data文件夹中看到了一些cs_cz.affix和cs_cz.dict文件,但没有捷克语配置(它可能没有随Postgres一起提供) 那么我应该创建一个吗?我必须创建/配置哪些DIC?对捷克语有什么支持吗? 我应该使用所有可能的命令吗?(同义词词典、同义词词典、Ispell词典、雪球词典) 我能够为ispelldict创建捷克配置,它工作得很好,但是我不确定它是否足够(只是ispell配置) 非常感谢我尝试阅读,但我有点困惑。我

我正在尝试设置捷克语的全文搜索。我有点困惑,因为我在
tsearch_data
文件夹中看到了一些
cs_cz.affix
cs_cz.dict
文件,但没有捷克语配置(它可能没有随Postgres一起提供)

那么我应该创建一个吗?我必须创建/配置哪些DIC?对捷克语有什么支持吗? 我应该使用所有可能的命令吗?(
同义词词典、同义词词典、Ispell词典、雪球词典

我能够为
ispell
dict创建捷克配置,它工作得很好,但是我不确定它是否足够(只是ispell配置)


非常感谢我尝试阅读,但我有点困惑。

我从未尝试过,但只要您准备好从源代码编译PostgreSQL,就应该能够创建捷克雪球词干分析器

其中有一个解释:

src/backend/snowball/libstemmer/
src/include/snowball/libstemmer/
直接从其libstemmer\u c获取 分发,只需对文件包含内容进行一些小的调整。注 这些文件中的大多数实际上是派生文件,而不是主源文件。 主源代码使用Snowball语言,并随附提供 使用Snowball项目中的Snowball-to-C编译器。我们选择 在PostgreSQL发行版中包含派生文件,因为大多数 安装将无法使用Snowball编译器

从新的Snowball更新PostgreSQL源代码 分布:

  • libstemmer\u c/src\u c/
    中的
    *.c
    文件复制到
    src/backend/snowball/libstemmer
    例如,将
    “./runtime/header.h”
    替换为
    “header.h”

    libstemmer_c/src_c/*.c中f的
    
    做
    sed's | \.\.\./runtime/header\.h | header.h |'$f>libstemmer/`basename$f`
    完成
    
    (或者,如果从主雪球重建词干分析器文件 源代码,只需从Snowball编译器开关中省略
    “-r../runtime”
    。)

  • libstemmer\u c/runtime/
    中的
    *.c
    文件复制到
    src/backend/snowball/libstemmer
    ,并对其进行编辑以删除直接包含的内容 例如
    之类的系统标题–它们应该只包括
    “header.h”
    。 (此删除可避免在某些平台上出现可移植性问题,
    对大文件编译选项敏感。)

  • 复制
    libstemmer\u c/src\u c/
    libstemmer\u c/runtime/
    中的
    *.h
    文件 到
    src/include/snowball/libstemmer
    。此时写入头文件 不需要任何更改

  • 检查是否添加或删除了任何炮干分析器模块。如果是,请编辑
    Makefile
    中的
    OBJS
    列表,以及
    dict_snowball.c
    中的
    include
    列表,以及
    dict\u snowball.c
    中的表

  • 必须下载
    stopwords/
    中的各种stopword文件 分别从网站上的网页。 请注意,这些文件必须以UTF-8编码存储

  • 现在有一个捷克雪球茎杆可用,它是对该项目的贡献。没有现成的停止词词典,但我相信你可以找到一本或自己创建一本

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


    如果你愿意做这项工作,但不想修补PostgreSQL并每次都从源建立它,你也可以考虑向PostgreSQL提交补丁。只要词干分析器工作正常,我不希望您在那里遇到太多阻力(但补丁提交过程仍然很乏味)。

    我按照指导原则进行了提交(也称为补丁):可以在这里找到衍生的
    docker
    图像: