2017-03-01 119 views
2

我正在嘗試設置全文搜索捷克語。我有點困惑,因爲我看到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但我有點困惑。

回答

1

我從來沒有嘗試過,但只要您準備好從源代碼編譯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 –