【发布时间】:2016-02-28 00:55:04
【问题描述】:
在 Hibernate Search 5.3 上,我一直在尝试构建一个分析器,该分析器适合对通过 Hibernate Search 索引的许多字段进行排序。我知道对于排序不应该分析该字段,但只要您的分析器返回一个标记,我相信这没问题,另外您可以使用一些预构建的过滤器来区分大小写,HTML 剥离,在我的情况下,我也想只按前 20 个字符排序。
所以,这样的事情似乎可行。
@AnalyzerDef(name = "sortAnalyzer",
tokenizer = @TokenizerDef(factory = KeywordTokenizerFactory.class) ,
charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) },
filters =
{
@TokenFilterDef(
factory = EdgeNGramFilterFactory.class,
params = {
@Parameter(name = "minGramSize",value = "20"),
@Parameter(name = "maxGramSize",value = "20")
}
),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = TrimFilterFactory.class)
}
),
但它只有在我删除 EdgeNGramFilterFactory 时才有效。我想我可以只做一个桥来做子串。再说一次,我可以使用桥接器来完成整个事情并设置Analyze.NO。我的问题是推荐什么?桥接器与分析器相比有什么优势?
我尝试使用的分析器因任何原因不起作用?
【问题讨论】:
标签: hibernate-search