一個簡單而簡單的PostgreSQL擴展,為基於Hspell的希伯來文本提供了全文搜索詞典模板。
傳統上,希伯來語被認為很難執行文件檢索任務。它豐富的形態意味著單詞一方面具有很大的變化,並且同譜的廣泛存在導致歧義。所有這些都意味著,在處理希伯來文字時,全文搜索系統往往會遇到不良的回憶。
pg_hspell是一種PostgreSQL擴展,在使用數據庫的內置全文全文搜索子系統時,試圖幫助執行此類任務。它使用HSPELL項目提供的字典和語言信息來提供後Gres詞典模板,該模板將希伯來語單詞誘導為配置管道的一部分。
僅處理希伯來書籍;任何不包含任何希伯來字母的令牌均未識別,並將轉發到配置中的任何以下字典。
出現在可配置的停止單詞列表中的希伯來書籍被刪除。
對於是Hspell詞典中有效條目的代幣,所有可能的引理都以不同的變體排放。
所有其他令牌均已排放。
GNU/Linux系統
PostgreSQL 9.6+-早期版本也可能起作用,但無論如何都沒有正式支持
libhspell,用--enable-linginfo configure flag(通常為)
當前必須從源代碼構建pg_hspell 。確保可用的PostgreSQL和HSPELL可用的開發支持文件(標題等)。
要構建和安裝,請運行:
$ make install
這將違反並安裝到當前路徑中的pg_config的第一個實例確定的PostgreSQL安裝中。針對特定的安裝(或一個不在路徑中):
$ make install PG_CONFIG=/path/to/pg_config
要將擴展名加載到數據庫中,請作為適當許可的用戶執行以下SQL命令:
CREATE EXTENSION pg_hspell;這將放入當前的架構中,一個稱為hspell的全文詞典,該字典配置為捆綁的Hebrew Stop單詞的捆綁列表。要創建具有不同停止單詞列表(或根本沒有)的字典,請執行以下SQL命令類似的操作:
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
);與所有其他文本搜索字典模板一樣,停止單詞列表必須是保存在數據庫服務器的$SHAREDIR/tsearch_data目錄中的文件,並且具有.stop擴展名。上面的示例將尋找$SHAREDIR/tsearch_data/my_stop_words_file.stop
然後,詞典需要集成到文本搜索配置中,如PostgreSQL手冊中所述。該擴展名不提供任何預定義的配置。
由於hspell Directory模板只能識別包含希伯來語字符的令牌,因此在word , hword和hword-part類型標記(假設默認的Parser)中,基於它設置字典才有意義。
如上所述,當hspell的字典識別一個令牌時,發出了所有可能的誘餌(例如, - הרכבת - רכבת , הרכבה和הרכיב這對召回是有益的,但當然可能會損害精度。目前,此擴展名沒有執行任何形態上的歧義 - 無論如何,這需要句子上下文,PostgreSQL的全文搜索框架實際上並不能直接在字典模板中使用。
停止單詞過濾在輸入令牌本身上。停止單詞歧義在希伯來語中特別有問題(例如,請參見此博客文章),因此在創建停止單詞列表時要考慮到這一點,或者考慮是否要使用一個。
Hspell無法利用虛線文本,實際上,這些文本甚至無法在ISO-8859-8編碼中表示,這就是Libhspell使用的。當前,該字典模板不會識別包含NIQQUD的令牌!
如果需要處理虛線文本,則必須在將文本傳遞給pg_hspell詞典之前剝離NiQQUD。這可以通過為不活躍模塊創建合適的規則集來實現。將來, pg_hspell可能會直接執行此操作。
請注意,PostgreSQL隨附的默認文本搜索解析器無法正確處理特定於希伯來語的角案例,其中通常認為是標點符號的字符(即Apostrophe和引號標記)在嵌入單詞中時不會像這樣。此類案例在縮寫和縮寫中的希伯來計算機文本中很常見,這可能不會像預期的那樣被標記化。
例如:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
這不是針對pg_hspell或其在其範圍內的特定內容。如果有特定的情況尤其令人煩惱,則可以使用詞庫詞典來處理它們。您還可以考慮PG_ICU_PARSER擴展程序提供的解析器,該解析器正確處理了此操作。
pg_hspell本身是根據Mozilla公共許可證2.0許可的。隨附的停止單詞列表基於Guy Saar創建的一個,並從https://github.com/fergiemcdowall/stopword中提取,並根據MIT許可發布。