在休眠搜索中使用现有分析器AnalyzerDiscriminator [英] Use existing analyzer in hibernate search AnalyzerDiscriminator
本文介绍了在休眠搜索中使用现有分析器AnalyzerDiscriminator的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
@Entity
@Indexed
@AnalyzerDefs({
@AnalyzerDef(name = "en",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = EnglishPorterFilterFactory.class
)
}),
@AnalyzerDef(name = "de",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = GermanStemFilterFactory.class)
})
})
public class BlogEntry {
@Id
@GeneratedValue
@DocumentId
private Integer id;
@Field
@AnalyzerDiscriminator(impl = LanguageDiscriminator.class)
private String language;
@Field
private String text;
private Set<BlogEntry> references;
// standard getter/setter
// ...
}
public class LanguageDiscriminator implements Discriminator {
public String getAnalyzerDefinitionName(Object value, Object entity, String field) {
if ( value == null || !( entity instanceof Article ) ) {
return null;
}
return (String) value;
}
}
从参考文档中,
如何使用动态定义的现有分析器(如org.apache.lucene.analysis.cjk.CJKAnalyzer
和en
和de
)?我只能在这里返回分析器的名称,当我返回CJKAnalyzer
时,我将得到未定义的分析器.
From Reference Doc,
How can I use an existing analyzer like org.apache.lucene.analysis.cjk.CJKAnalyzer
along with en
and de
ones which I have dynamically defined? I can only return name of the analyzer here and when I return CJKAnalyzer
I get not defined analyzer.
如何将现有分析仪添加到分析仪定义中?
How can I add an existing analyzer to my analyzer definitions?
推荐答案
这是一个很好的问题,我很惊讶以前没有人问过这个问题.
That's an excellent question, and I'm surprised noone asked that before.
答案是不可能的.
我已经在项目中打开了功能请求以对此进行改进:
I have opened a feature request on the project to improve on this:
这篇关于在休眠搜索中使用现有分析器AnalyzerDiscriminator的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文