我使用 Stardog 作为语义图数据库。例如,我的数据库包含“apple”但不包含“apples”,所以如果我查询“apples”,它找不到任何东西。
解决此问题的一种可能方法是将所有标签的词干版本添加到数据库中,但这效率低下。
由于 Stardog 使用 SPARQL 查询语言和 Lucene,我如何要求 Stardog 在其搜索中使用词干提取?
假设您想要英语语言词干,使用正确的分析器将是EnglishAnalyzer
Stardog 允许您根据他们的文档更改您的分析仪。您需要实现一个 AnalyzerFactory,例如:
public final class EnglishAnalyzerFactory implements AnalyzerFactory {
@Override
public Analyzer get() {
return new EnglishAnalyzer(Version.LUCENE_47);
}
}
然后:
创建一个名为
com.complexible.stardog.search.AnalyzerFactory
META-INF/services 目录的文件。该文件的内容应该是 AnalyzerFactory 的完全限定类名。