我正在搜索斯洛文尼亚语的词干算法,我可以在狮身人面像搜索中使用。
我试图实现的是,例如在搜索“jabolka”时,我还需要包含“jabolko”、“jabolk i”、“jabolk”等的文档的结果。
我找到了一些关于斯洛文尼亚梗存在的参考资料,但是我找不到下载的地方,它甚至不在任何地方出售。
我遇到的另一个选择是在sphinx源配置(http://sphinxsearch.com/docs/manual-0.9.9.html#conf-wordforms)中使用optionwordforms,但是构建自己的字典太困难了,所以我想知道是否已经有了可供公共访问的字典?
如果斯洛文尼亚的STEMMER不可用,有人能建议其他方法来获得相似的搜索结果吗?

最佳答案

我设法按以下步骤编译斯洛文尼亚词干分析器:
下载http://snowball.tartarus.org/dist/snowball_code.tgz(snowball的源代码)并将其解包
http://snowball.tartarus.org/archives/snowball-discuss/0725.html下载斯洛文尼亚算法,并将其保存到文件夹/algorithms/slovene中步骤1的解包项目。文件名必须stem_ISO_8859_2.sbl
算法采用i so编码,因此我将其转换为utf8并将其保存为stem_Unicode.sbl(您必须为斯洛文尼亚的特殊字符(如榍_)找到utf字符代码)
编辑/libstemmer文件夹中的两个.txt文件并为斯洛文尼亚语添加条目:

slovene         UTF_8,ISO_8859_2        slovene,sl,slv

编辑/gnumakefile并添加斯洛文尼亚语(一次用于utf的语言列表,一次用于iso__2_算法)
转到文件夹/libstemmer并运行:
./mkmodules.pl modules.h src_c modules.txt ../mkinc.mak
./mkmodules.pl modules_utf8.h src_c  modules_utf8.txt ../mkinc_utf8.mak

这将生成以后编译所需的文件。
运行make(从解包文件的根目录)
如果在编译过程中没有错误,那么应该在其中包含/src_c文件夹和斯洛文尼亚词干分析器的代码(与其他文件夹相邻)
stem_UTF_8_slovene.c
stem_ISO_8859_2_slovene.c
...

解压缩最新的sphinx并将所有文件从snowball项目复制到sphinx/libstemmer_c文件夹(不包括libstemmer.oGNUmakefile
编译sphinx:
touch NEWS README AUTHORS ChangeLog
autoreconf --force --install
./configure --with-libstemmer
make
make install

如果一切顺利,您应该让Slovene Stemmer为Sphinx工作,您只需在Sphinx索引配置中启用它(在我的Debian上,它位于/usr/local/etc/sphinx.conf中):
charset_type = utf-8
morphology = libstemmer_slovene

希望这能帮上忙,我以前没有使用autoconf的经验,所以我花了一段时间才弄明白。
这款Slovene Stemmer并没有在http://snowball.tartarus.org上正式发布,但从我的测试来看,它对我的项目来说已经足够好了。

09-12 17:52