@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;
}
}
来自Reference Doc,
如何使用现有的分析工具,例如org.apache.lucene.analysis.cjk.CJKAnalyzer
以及我动态定义的en
和de
分析器?我只能在这里返回分析器的名称,当我返回CJKAnalyzer
时,我没有定义分析器。
如何将现有分析仪添加到我的分析仪定义中?
答案 0 :(得分:0)
这是一个很好的问题,我很惊讶之前没有人问过这个问题。
答案是,这是不可能的。
我已经在项目上打开了一项功能请求,以改进: