为了账号安全,请及时绑定邮箱和手机立即绑定

在 Hibernate Search 中运行时选择分析器

在 Hibernate Search 中运行时选择分析器

有只小跳蛙 2023-11-01 22:33:18
我将 Hibernate Search 与 Lucene 结合使用,并且希望能够基于配置文件中提供的Filter 名称(获取,例如this )添加一个AnalyzerDef,并在应用程序启动时加载。现在我有类似的代码@AnalyzerDefs({        @AnalyzerDef(name = "phraseAnalyzer",                tokenizer = @TokenizerDef(factory = KeywordTokenizerFactory.class),                filters = {                        @TokenFilterDef(factory = ClassicFilterFactory.class),                        @TokenFilterDef(factory = LowerCaseFilterFactory.class)                }),})@MappedSuperclasspublic abstract class MyObject {我查看了文档,但并没有告诉我我将如何做到这一点。我怀疑这个问题可能是相关的。
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

在 Hibernate Search 5.11(以及自 5.6 或 5.7,IIRC)中,您可以使用LuceneAnalysisDefinitionProvider.


实现接口:


public class CustomAnalysisDefinitionProvider implements LuceneAnalysisDefinitionProvider {

    @Override

    public void register(LuceneAnalyzerDefinitionRegistryBuilder builder) {

        builder.analyzer( "myAnalyzer" )

                        .tokenizer( KeywordTokenizerFactory.class )

                        .tokenFilter( ClassicFilterFactory.class )

                        .tokenFilter( LowerCaseFilterFactory.class )

                        .tokenFilter( StopFilterFactory.class )

                                // You can pass parameters like this

                                .param( "mapping", "org/hibernate/search/test/analyzer/stoplist.properties" )

                                .param( "ignoreCase", "true" );


        // You can define multiple analyzers

        builder.analyzer( "otherAnalyzer" )

                        .tokenizer( ... ) ...

    }

}


然后告诉 Hibernate Search 使用它:


# In properties.java

hibernate.search.lucene.analysis_definition_provider = com.mycompany.CustomAnalysisDefinitionProvider;


您可以在 的实现中自由地执行任何操作register,因此您可能可以检查系统属性,甚至加载配置文件。如果您的实现集有限,您还可以在启动 JVM 时通过hibernate.search.lucene.analysis_definition_provider系统属性设置直接覆盖定义提供程序。

查看完整回答
反对 回复 2023-11-01
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信