java - Hibernate 搜索自定义停用词列表

标签 java hibernate lucene hibernate-search

我需要自定义停用词列表,以便按文档标题进行搜索。
我有以下映射:

@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 默认值不同的停用词。

但是,如果我使用默认启用但我的 stoplist.properties 文件中不存在的停用词(例如, 这个词。

当前配置有什么问题? 如何使 hibernate 搜索使用自定义停用词列表?

我使用 hibernate-search-orm 5.6.1 版本。

结果在集成测试中通过即时创建的索引进行验证:

@Before
public void setUpLuceneIndex() throws InterruptedException {
    FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
    fullTextEntityManager.createIndexer().startAndWait();
}

最佳答案

据我所知,您的配置看起来很正常。

更改停用词配置后,您是否重新索引了实体?您需要在索引时考虑新配置。

如果你这样做了但仍然不起作用,请尝试在 StopFilterFactory 构造函数中添加断点并通知方法以查看发生了什么!

关于java - Hibernate 搜索自定义停用词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47111852/

相关文章:

java - 如何在 cpanel linux 托管的 wordpress 网站上发布一个简单的 Java 数学计算应用程序?

java hibernate 覆盖枚举/字符串映射值

java - 如果属性是实体类型,如何为属性提供值?

java - 当我的 Hibernate 事务由 Spring 管理时如何启用 Hibernate 拦截器?

apache - 本地主机 :8080/solr/browse gives a lazy loading error

java - 无法使用复合 @IdClass 映射实体

java - Libgdx减少调用和优化游戏

java - Poi Excel 无法应用背景颜色

java - 如何从 Lucene 8.6.1 索引中获取所有 token 的列表?

elasticsearch - 使用 Kibana 6.0 或 7+ (v7.0.1) 从控制台创建索引模式