我正在搜索斯洛文尼亚语的词干算法,我可以将其与 Sphinx 搜索一起使用。
我想要实现的目标是,例如,在搜索“jabolka”时,我还想要包含“jabolko”、“jabolki”、“jabolk”等文档的结果。
我找到了一些关于斯洛文尼亚词干分析器存在的参考资料,但我找不到在哪里下载它,它甚至没有在任何地方出售......
我遇到的另一个选择是使用选项wordforms
在 Sphinx 源配置中(http://sphinxsearch.com/docs/manual-0.9.9.html#conf-wordforms),但是构建我自己的字典太困难了,所以我想知道是否有任何可公开访问的字典可用?
如果斯洛文尼亚语词干分析器不可用,有人可以建议其他一些方法来实现类似的搜索结果吗?
我设法通过以下步骤编译斯洛文尼亚语词干分析器:
- 下载http://snowball.tartarus.org/dist/snowball_code.tgz(雪球的源代码)并解压它
- 从下载斯洛文尼亚算法http://snowball.tartarus.org/archives/snowball-discuss/0725.html并将其保存到文件夹 /algorithms/slovene 中步骤 1 中解压的项目中。文件名必须是
stem_ISO_8859_2.sbl
- 算法采用ISO编码,所以我将其转换为UTF8并另存为
stem_Unicode.sbl
(您必须找到斯洛文尼亚特殊字符的 utf 字符代码,例如 ČŠŽĆ)
-
编辑 /libstemmer 文件夹中的两个 .txt 文件并添加斯洛文尼亚语条目:
slovene UTF_8,ISO_8859_2 slovene,sl,slv
- 编辑 /GNUmakefile 并添加 slovene (一次添加到 utf 语言列表,一次添加到 ISO_8859_2_algorithms)
-
转到文件夹 /libstemmer 并运行:
./mkmodules.pl modules.h src_c modules.txt ../mkinc.mak
./mkmodules.pl modules_utf8.h src_c modules_utf8.txt ../mkinc_utf8.mak
这将生成稍后编译所需的文件。
- run
make
(来自解压文件的根目录)
-
如果编译期间没有错误,您应该有 /src_c 文件夹和斯洛文尼亚语词干分析器的代码(在其他文件夹旁边)
stem_UTF_8_slovene.c
stem_ISO_8859_2_slovene.c
...
解压最新的 sphinx 并将 Snowball 项目中的所有文件复制到 sphinx /libstemmer_c 文件夹(不包括libstemmer.o
and GNUmakefile
)
-
编译狮身人面像:
touch NEWS README AUTHORS ChangeLog
autoreconf --force --install
./configure --with-libstemmer
make
make install
-
如果一切顺利,你应该有斯洛文尼亚语词干分析器来让 sphinx 工作,你只需要在你的 sphinx 索引配置中启用它(在我的 Debian 上它位于 /usr/local/etc/sphinx.conf 中):
charset_type = utf-8
morphology = libstemmer_slovene
希望这对某人有帮助,我以前没有经验autoconf所以我花了一段时间才弄清楚这一点。
这个斯洛文尼亚词干分析器尚未正式发布于http://snowball.tartarus.org,但从我的测试来看,它对于我的项目来说已经足够好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)