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

时间:2017-03-01 19:45:30

标签: postgresql full-text-search

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

我应该创建一个吗?我必须创建/配置哪些dics?对捷克语有什么支持吗? 我应该使用所有可能的决定吗? (Synonym Dictionary, Thesaurus Dictionary, Ispell Dictionary, Snowball Dictionary

我可以为ispell dict创建捷克语配置,它运行正常,我不确定它是否足够(只是ispell配置)。

非常感谢我试着阅读https://www.postgresql.org/docs/9.5/static/textsearch.html,但我有点困惑。

1 个答案:

答案 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源代码   分布:

     
      
  1. 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。)

  2.   
  3. libstemmer_c/runtime/中的src/backend/snowball/libstemmer个文件复制到   <stdio.h>,并修改它们以删除直接包含   诸如"header.h"之类的系统标题 - 它们应该只包含<stdio.h>。   (此删除可避免*.h某些平台上的可移植性问题   对大文件编译选项很敏感。)

  4.   
  5. 复制libstemmer_c/src_c/libstemmer_c/runtime/中的src/include/snowball/libstemmer个文件   到OBJS。在写这个头文件   不需要任何更改。

  6.   
  7. 检查是否添加或删除了任何词干分析器模块。如果是,请编辑   Makefile中的#include列表,dict_snowball.c中的stemmer_modules[]列表,以及   dict_snowball.c中的stopwords/表。

  8.   
  9. 必须下载dynamic responseObject = JsonConvert.DeserializeObject("{\"status\":\"1\"..."); 中的各种停用词文件   单独来自snowball.tartarus.org网站上的网页。   请注意,这些文件必须以UTF-8编码存储。

  10.   

现在有一个捷克雪球提取器here,它为该项目做出了贡献。没有停用词词典,但我相信你可以找到一个或自己创建一个。

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

如果你愿意做这项工作,但又不想修补PostgreSQL并且每次都从源代码构建它,你也可以考虑向PostgreSQL提交一个补丁。只要割线器工作正常,我就不会期望你会有很多阻力(但补丁提交过程仍然很乏味)。