首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate elasticsearch音译(ICU转换)

Hibernate elasticsearch音译(ICU转换)
EN

Stack Overflow用户
提问于 2018-08-30 21:56:18
回答 1查看 272关注 0票数 0

我使用的是hibernate-search和hibernate-search-elasticsearch版本5.10.3.Final。我想在一些领域应用ICU变换。以下是elasticsearch文档中的过滤器:

https://www.elastic.co/guide/en/elasticsearch/plugins/5.6/analysis-icu-transform.html

但是我在hibernate-search依赖项使用的lucene版本中找不到аTokenFilterFactory。在TokenFilterDef中,工厂属性是必需的。有人知道如何使用hibernate-search实现音译吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 22:26:03

您可以使用注释并依赖于org.hibernate.search.elasticsearch.analyzer.ElasticsearchTokenFilterFactory来创建JSON令牌过滤器定义:

代码语言:javascript
复制
@AnalyzerDef(
    name = "myAnalyzer",
    tokenizer = ...,
    filter = @TokenFilterDef(
        name = "myLatinTransform",
        factory = ElasticsearchTokenFilterFactory.class,
        params = {
            @Parameter(name = "type", value = "'icu_transform'"),
            @Parameter(name = "id", value = "'Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC'")
        }
    )
)

注意:参数值被解释为JSON,因此字符串值必须用引号括起来。不过,为了方便起见,允许使用单引号。

请参阅https://docs.jboss.org/hibernate/search/5.10/reference/en-US/html_single/#_custom_analyzers_using_the_code_analyzerdef_code_annotation

或者,您可以通过编程方式定义分析器,并从更自然的API中获益:

代码语言:javascript
复制
# In hibernate.properties
hibernate.search.elasticsearch.analysis_definition_provider com.acme.CustomAnalyzerProvider

public class CustomAnalyzerProvider implements ElasticsearchAnalysisDefinitionProvider {
    @Override
    public void register(ElasticsearchAnalysisDefinitionRegistryBuilder builder) {
        builder.analyzer( "myAnalyzer" )
                .withTokenizer( "whitespace" )
                .withTokenFilter( "myLatinTransform" );

        builder.tokenFilter( "myLatinTransform" )
                .type( "icu_transform" )
                .param( "id", "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC" );
    }
}

请参阅https://docs.jboss.org/hibernate/search/5.10/reference/en-US/html_single/#_custom_analyzers_using_a_definition_provider

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52098868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档