在Hibernate Search 6.1.8(Lucene后端)配置EdgeNGramFilter的min/maxGramSize
问题描述
我正尝试参考Hibernate Search 6.0.0.Beta2发布文档中的搜索分析器部分实现自动补全功能。
参考的示例代码如下:
@Entity @Indexed public class Book { @Id private Long id; @FullTextField( name = "title_autocomplete", analyzer = "autocomplete", searchAnalyzer = "autocomplete_query" ) private String title; // ... getters and setters ... }
为定义名为"autocomplete"的分析器和"autocomplete_query"的搜索分析器,我遵循自定义分析器与标准化器文档,编写了如下自定义Lucene分析器配置类并创建了新的persistence.xml:
public class CustomLuceneAnalysisConfigurer implements LuceneAnalysisConfigurer { @Override public void configure(LuceneAnalysisConfigurationContext context) { context.analyzer("autocomplete").custom() .tokenizer(StandardTokenizerFactory.class) .charFilter(HTMLStripCharFilterFactory.class) .tokenFilter(LowerCaseFilterFactory.class) .param("language", "English") .tokenFilter( ASCIIFoldingFilterFactory.class) .tokenFilter(EdgeNGramFilterFactory.class); context.analyzer("autocomplete_query").custom() .tokenizer(StandardTokenizerFactory.class) .charFilter(HTMLStripCharFilterFactory.class) .tokenFilter(LowerCaseFilterFactory.class) .param("language", "English") .tokenFilter(ASCIIFoldingFilterFactory.class); } }
<property name="hibernate.search.backend.analysis.configurer" value="class:net.ad.mc.lucene_search.CustomLuceneAnalysisConfigurer"/>
我的问题是:是否可以通过上述配置方式设置EdgeNGramFilter的minGramSize和maxGramSize参数?我查阅了官方文档但未找到相关方法。
解答
可以设置这两个参数,只需在添加EdgeNGramFilterFactory后链式调用param()方法传入对应参数即可。修改后的autocomplete分析器配置如下:
context.analyzer("autocomplete").custom() .tokenizer(StandardTokenizerFactory.class) .charFilter(HTMLStripCharFilterFactory.class) .tokenFilter(LowerCaseFilterFactory.class) .param("language", "English") .tokenFilter(ASCIIFoldingFilterFactory.class) .tokenFilter(EdgeNGramFilterFactory.class) // 配置NGram参数 .param("minGramSize", "2") .param("maxGramSize", "10");
参数值需以字符串形式传入,Lucene过滤器工厂会自动解析为对应数值类型。你可根据业务需求调整具体数值,比如设置最小2个字符、最大10个字符的前缀词范围。
另外注意,LowerCaseFilterFactory并不需要language参数,可移除对应的.param("language", "English")行,避免无效配置。
内容的提问来源于stack exchange,提问作者Lyn
相关产品推荐
相关产品推荐

