斯洛文尼亚的斯洛文尼亚干线器

时间:2012-01-03 14:50:27

标签: php search full-text-search sphinx stemming

我正在搜索斯洛文尼亚语的词干算法,我可以使用Sphinx搜索。

我想要实现的是例如在搜索'jabolka'时,我也想要包含'jabolko','jabolki','jabolk'等文档的结果。

我找到了一些关于斯洛文尼亚词干的存在的参考资料,但我找不到下载的地方,甚至没有在任何地方出售......

我遇到的另一个选项是在Sphinx源配置(http://sphinxsearch.com/docs/manual-0.9.9.html#conf-wordforms)中使用选项wordforms,但是构建我自己的字典会太困难,所以我想知道是否有任何可公开访问的字典字典已经可以使用了吗?


如果没有斯洛文尼亚的词干分析器,有人可以建议其他方法来实现类似的搜索结果吗?

3 个答案:

答案 0 :(得分:4)

我设法按照以下步骤编译斯洛文尼亚语词干:

  1. 下载http://snowball.tartarus.org/dist/snowball_code.tgz(雪球的源代码)并解压缩
  2. http://snowball.tartarus.org/archives/snowball-discuss/0725.html下载斯洛文尼亚算法并将其保存到文件夹/ algorithms / slovene中步骤1的解压缩项目中。文件名必须为stem_ISO_8859_2.sbl
  3. 算法采用ISO编码,因此我将其转换为UTF8并将其保存为stem_Unicode.sbl(您必须找到ČŠŽĆ等斯洛文尼亚特殊字符的utf字符代码)
  4. 编辑/ libstemmer文件夹中的两个.txt文件并添加斯洛文尼亚语的条目:

    slovene         UTF_8,ISO_8859_2        slovene,sl,slv
    
  5. 编辑/ GNUmakefile并添加slovene(一次用于utf语言列表,一次用于ISO_8859_2_algorithms)
  6. 转到文件夹/ libstemmer并运行:

    ./mkmodules.pl modules.h src_c modules.txt ../mkinc.mak
    ./mkmodules.pl modules_utf8.h src_c  modules_utf8.txt ../mkinc_utf8.mak
    

    这将生成稍后编译所需的文件。

  7. 运行make(来自解压缩文件的根目录)
  8. 如果在编译期间没有错误,你应该有/ src_c文件夹和代码中的斯洛文尼亚语词干(旁边是其他人)

    stem_UTF_8_slovene.c
    stem_ISO_8859_2_slovene.c
    ...
    
  9. 打开最新的sphinx并将所有雪球项目中的文件复制到sphinx / libstemmer_c文件夹(libstemmer.oGNUmakefile除外)

  10. 编译sphinx:

    touch NEWS README AUTHORS ChangeLog
    autoreconf --force --install
    ./configure --with-libstemmer
    make
    make install
    
  11. 如果一切顺利的话,你应该为斯芬克斯工作使用slovene stemmer,你只需要在sphinx index configuratiun中启用它(在我的Debian上它在/usr/local/etc/sphinx.conf中):< / p>

    charset_type = utf-8
    morphology = libstemmer_slovene
    
  12. 希望这有助于某人,我之前没有使用 autoconf 的经验,所以我花了一段时间来解决这个问题。

    这个单一的限制器没有在http://snowball.tartarus.org正式发布,但从我的测试来看,它对我的​​项目来说已经足够好了。

答案 1 :(得分:1)

我不确定这是否符合您的要求,但我在Sphinx文档中提到了一个名为 spelldump 的工具:

  

spelldump是Sphinx包中的辅助工具之一。

     

用于提取使用的字典文件的内容   ispell或MySpell格式,可以帮助构建单词列表   字形 - 所有可能的形式都是为您预先构建的。

     

http://sphinxsearch.com/docs/current.html#ref-spelldump

它需要“使用ispell或MySpell的字典文件” - 我找到了a reference to a Slovenian ispell dictionary file,这可能是合适的。

祝你好运!

答案 2 :(得分:0)

我还试图为斯洛文尼亚语寻找词干提取器,但没有找到任何现有的解决方案。

我使用从未实现的 Snowball 版本作为灵感,在 Ruby 中构建了自己的词干分析器。

它在 Github 上以 hajkr/slovene-stemmer 的形式提供。它远非完美,但适用于大多数情况。