Spring Boot 2.6はHibernate Search 6に対応している。そこで、日本語の検索も出来るようにするため、lucene-analyzers-kuromojiのAnalyzerをLuceneAnalysisConfigurerで設定しようとした。しかし、公式のガイド通りやってもうまくいかなかったため、メモを残しておく。
依存関係
implementation 'org.apache.lucene:lucene-analyzers-kuromoji:8.11.1'
implementation 'org.hibernate.search:hibernate-search-mapper-orm:6.1.4.Final'
implementation 'org.hibernate.search:hibernate-search-backend-lucene:6.1.4.Final'
LuceneAnalysisConfigurerの実装
@Component("customLuceneAnalysisConfigurer")
public class CustomLuceneAnalysisConfigurer implements LuceneAnalysisConfigurer {
/**
* {@inheritDoc}
*/
@Override
public void configure(LuceneAnalysisConfigurationContext context) {
context.analyzer("japanese").instance(new JapaneseAnalyzer());
}
}
CustomLuceneAnalysisConfigurerの設定
公式の例では、実装したクラスを直接crawlerapi.config.CustomLuceneAnalysisConfigurerのように指定していたのだが、上記のようにComponentとして登録してから、下記のように参照するようにしないとSpring Bootの起動でハングアップした。
spring:
jpa:
properties:
hibernate:
search.backend:
analysis.configurer: customLuceneAnalysisConfigurer
設定したAnalyzerの使用方法
先ほど定義した名前で参照できる。
@FullTextField(analyzer = "japanese")