一个简单而简单的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许可发布。