我通过persistence.xml对Hibernate Search
的配置提出了疑问。用于索引和搜索的标准分析器是StandardAnalyzer
。该分析器每个默认值都有一个英文停用词列表。我知道通过构造函数,这个stopword-list可以替换为自己的列表(或EMPTY_SET)。不幸的是,我在官方文档中找不到这样的选项。我发现的唯一事情就是可以通过hibernate.search.analyzer
属性设置不同的分析器。我的问题:是否存在使用StandardAnalyzer
时停用英语停用词的现有属性?
答案 0 :(得分:1)
您可以定义自己的 编辑:正如@AnarchoEnte所说,StandardAnalyzer
子类,将所需参数传递给超级构造函数,并将hibernate.search.analyzer
属性设置为子类的完全限定类名。StandardAnalyzer
是最后一堂课,所以你实际上不能这样做。
但在我看来,您最好定义自己的分析仪,完全按照标准分析仪的方式进行,但没有停用词:
@AnalyzerDef(
name = "myDefault",
tokenizer = @TokenizerDef(
factory = org.apache.lucene.analysis.standard.StandardTokenizerFactory.class
),
filters = {
@TokenFilterDef(
factory = org.apache.lucene.analysis.standard.StandardFilterFactory.class
)
@TokenFilterDef(
factory = org.apache.lucene.analysis.core.LowerCaseFilterFactory.class
)
}
)
public class MyEntity { // The annotation must be on an indexed entity, which one doesn't matter.
...
}
然后将其设置为默认分析器:
hibernate.search.analyzer = myDefault
这样,如果您需要更改分析器(添加一些过滤器,更改标记器,......),您只需要更改该定义。