【问题标题】:how can ask Stardog to use stemming in its search?如何让 Stardog 在其搜索中使用词干提取?
【发布时间】:2015-05-05 14:17:47
【问题描述】:

我使用 Stardog 作为语义图数据库。例如,我的数据库包含“apple”但不包含“apples”,所以如果我查询“apples”,它找不到任何东西。

解决此问题的一种可能方法是将所有标签的词干版本添加到数据库中,但这效率低下。

由于 Stardog 使用 SPARQL 查询语言和 Lucene,我如何要求 Stardog 在其搜索中使用词干提取?

【问题讨论】:

    标签: lucene sparql stardog


    【解决方案1】:

    假设您想要英语语言词干提取,正确使用的分析器将是 EnglishAnalyzer

    Stardog 允许您根据their documentation 更改分析仪。你需要实现一个 AnalyzerFactory,比如:

    public final class EnglishAnalyzerFactory implements AnalyzerFactory {
        @Override
        public Analyzer get() {
            return new EnglishAnalyzer(Version.LUCENE_47);
        }
    }
    

    然后:

    在 META-INF/services 目录中创建一个名为 com.complexible.stardog.search.AnalyzerFactory 的文件。该文件的内容应该是 AnalyzerFactory 的完全限定类名。

    【讨论】:

    • 谢谢。我做到了,但这对我的查询没有影响。我用的是 Stardog spring,还需要其他配置吗?
    • 你重启服务器了吗?还要确保编译的类与服务定义一起在类路径中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2010-12-24
    相关资源
    最近更新 更多