【发布时间】:2022-01-26 14:22:59
【问题描述】:
我想配置一个自定义标记器,以便在带有 Spring Boot 2.5.x 的 Hibernate Search (6.0.8) 中的自定义分析器中使用。根据文档 (https://docs.jboss.org/hibernate/search/6.1/reference/en-US/html_single/#_custom_index_settings),我应该使用这样的自定义索引设置:
spring:
jpa:
properties:
hibernate:
search:
enabled: true
backend:
indexes:
Lemma:
analysis:
configurer: class:**.**.CustomAnalysisConfigurer
schema_management:
settings_file: custom/index-settings.json
我的 custom/index-settings.json 看起来像
{
"analysis": {
"tokenizer": {
"custom_ngram_tokenizer": {
"type": "ngram",
"min_gram": "2",
"max_gram": "3"
}
}
}
}
CustomAnalysisConfigurer 看起来像
package ***.elasticsearch
import org.hibernate.search.backend.elasticsearch.analysis.ElasticsearchAnalysisConfigurationContext
import org.hibernate.search.backend.elasticsearch.analysis.ElasticsearchAnalysisConfigurer
class CustomAnalysisConfigurer : ElasticsearchAnalysisConfigurer {
override fun configure(context: ElasticsearchAnalysisConfigurationContext) {
context.analyzer("customAnalyzer").custom().tokenizer("custom_ngram_tokenizer")
}
}
我想在我的实体中调用它
@FullTextField(analyzer = "customAnalyzer")
当我在CustomAnalysisConfigurer 中使用默认的可用标记器(如ngram)时,一切正常。但我希望 Hibernate 会使用来自custom/index-settings.json 的设置为我创建一个索引。看起来文件根本没有被拾取。也试过了:
spring:
jpa:
properties:
hibernate:
search:
enabled: true
backend:
analysis:
configurer: class:**.**.CustomAnalysisConfigurer
schema_management:
settings_file: custom/index-settings.json
设置对所有索引都有效。但这也没有想要的结果。
PS **.** 仅用于掩蔽 ;)
【问题讨论】:
标签: spring-boot kotlin elasticsearch jpa hibernate-search