By the way @horvoje , @gsmet pointed out to me that the only purpose of your bridge was to index multiple String values and remove spaces within those values.
With Hibernate Search 6, you can easily do that with one annotation + a normalizer:
@KeywordField(normalizer = "barcode")
private Collection<String> barcodes;
Just define the normalizer in your analysis configurer:
package org.hibernate.search.documentation.analysis;
import org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurationContext;
import org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurer;
public class MyLuceneAnalysisConfigurer implements LuceneAnalysisConfigurer {
@Override
public void configure(LuceneAnalysisConfigurationContext context) {
context.normalizer( "barcode" ).custom()
.tokenFilter( "lowercase" ) // If you need it
.tokenFilter( "patternReplace" )
.param( "pattern", " " )
.param( "replacement", "" );
}
}
And make sure to instruct Hibernate Search to use your analysis configurer:
hibernate.search.backend.analysis.configurer = class:org.hibernate.search.documentation.analysis.MyLuceneAnalysisConfigurer
You can do something similar for Elasticsearch, you will just have to use a different interface and pass different names to the tokenFilter
/param
methods: Hibernate Search 6.1.7.Final: Reference Documentation