Hibernate SearchでSolrのTokenizerFactoryやFilterを使う

memo

package com.company.demo.search;

import org.apache.solr.analysis.ASCIIFoldingFilterFactory;
import org.apache.solr.analysis.LowerCaseFilterFactory;
import org.apache.solr.analysis.NGramTokenizerFactory;
import org.hibernate.search.annotations.Factory;
import org.hibernate.search.cfg.SearchMapping;

/**
 * This configuration is picked up by hibernate search using the <code>hibernate.search.model_mapping</code>
 * code in <code>/META-INF/persistence.xml</code>
 */
public class SearchMappingFactory {
    @Factory
    public SearchMapping getSearchMapping() {
        SearchMapping mapping = new SearchMapping();
        mapping.analyzerDef("custom", NGramTokenizerFactory.class).tokenizerParam("maxGramSize", "40") //
                .filter(ASCIIFoldingFilterFactory.class) //
                .filter(LowerCaseFilterFactory.class);
        return mapping;
    }
}

/META-INF/persistence.xml

	<properties>
		<!-- ommited -->		
		<property name="hibernate.search.model_mapping" value="com.company.demo.search.SearchMappingFactory" />
	</properties>

を追加