Java Hibernate搜索自定义停止词列表
我需要自定义stopwords列表,以便按文档标题进行搜索。 我有以下映射:Java Hibernate搜索自定义停止词列表,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我需要自定义stopwords列表,以便按文档标题进行搜索。 我有以下映射: @Entity @Indexed @AnalyzerDef( name = "documentAnalyzer", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), filters = { @TokenFilterDef(factory = ASCIIF
@Entity
@Indexed
@AnalyzerDef(
name = "documentAnalyzer",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = ASCIIFoldingFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(
factory = StopFilterFactory.class,
params = {
@Parameter(name = "words", value = "stoplist.properties"),
@Parameter(name = "ignoreCase", value = "true")
}
)
}
)
public class Document {
...
@Field(analyzer = @Analyzer(definition = "documentAnalyzer"))
private String title;
...
}
stoplist.properties文件位于resources目录中,包含与StandardAnalyzer默认值不同的stopwords
但是,如果我使用默认启用但在stoplist.properties文件中不存在的stopwords(例如,单词will),则搜索不会返回任何结果
当前配置有什么问题?
如何使hibernate搜索使用自定义停止词列表
我使用hibernate搜索orm 5.6.1版本
通过动态创建索引,在集成测试中验证结果:
@Before
public void setUpLuceneIndex() throws InterruptedException {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();
}
就我所见,你的配置看起来很正常 更改停止字配置后,是否重新为实体编制索引?您需要在索引时考虑新配置
若您这样做了,但它仍然不起作用,请尝试在StopFilterFactory构造函数中添加一个断点,并通知该方法以查看发生了什么 实体在集成测试更新的问题描述中被编入索引,其中包含我用于验证搜索的附加信息。我已经查看了StopFilterFactory,stopWords属性由我的自定义属性文件中的单词填充。这个解决方案仍然不起作用。奇怪。尝试使用我们的测试用例模板复制它:。它可能会帮助您找到问题,如果不是,我会看一看!我刚刚将自定义分析器添加到所有索引字段中,整个解决方案开始正常工作。感谢您提供测试用例模板。