@Override public CharFilterDefinition translate(CharFilterDef hibernateSearchDef) { Class<? extends CharFilterFactory> factoryType = hibernateSearchDef.factory(); AnalysisDefinitionFactory<CharFilterDefinition> factory = luceneCharFilters.get( factoryType.getName() ); if ( factory == null ) { throw log.unsupportedCharFilterFactory( factoryType ); } Map<String, String> map = ParameterAnnotationsReader.toNewMutableMap( hibernateSearchDef.params() ); return factory.create( map ); }
private String registerCharFilterDef(String analyzerDefinitionName, CharFilterDef hibernateSearchDef) { String remoteName = hibernateSearchDef.name(); CharFilterDefinition elasticsearchDefinition = translator.translate( hibernateSearchDef ); if ( remoteName.isEmpty() && !hasParameters( elasticsearchDefinition ) ) { // No parameters, and no specific name was provided => Use the builtin, default definition remoteName = elasticsearchDefinition.getType(); } else { if ( remoteName.isEmpty() ) { remoteName = analyzerDefinitionName + "_" + hibernateSearchDef.factory().getSimpleName(); } registry.register( remoteName, elasticsearchDefinition ); } return remoteName; }
@AnalyzerDef(name = "entity_analyzer", charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class), @CharFilterDef(factory = MappingCharFilterFactory.class, params = {@Parameter( name = "mapping",
name = "cleaned_text", charFilters = { @CharFilterDef( factory = HTMLStripCharFilterFactory.class
@Indexed @Entity @NormalizerDef( name = "normalizerWithElasticsearchFactories", charFilters = @CharFilterDef( name = "custom-char-mapping-esFactory", factory = ElasticsearchCharFilterFactory.class, params = { @Parameter(name = "type", value = "'mapping'"), @Parameter(name = "mappings", value = "['foo => bar']"), } ), filters = @TokenFilterDef( name = "custom-elision-esFactory", factory = ElasticsearchTokenFilterFactory.class, params = { @Parameter(name = "type", value = "'elision'"), @Parameter(name = "articles", value = "['l', 'd']") } ) ) public static class AnalyzedEntity { @DocumentId @Id Long id; @Field(normalizer = @Normalizer(definition = "normalizerWithElasticsearchFactories")) String myField; }
@Override public CharFilterDefinition translate(CharFilterDef hibernateSearchDef) { Class<? extends CharFilterFactory> factoryType = hibernateSearchDef.factory(); AnalysisDefinitionFactory<CharFilterDefinition> factory = luceneCharFilters.get( factoryType.getName() ); if ( factory == null ) { throw log.unsupportedCharFilterFactory( factoryType ); } Map<String, String> map = ParameterAnnotationsReader.toNewMutableMap( hibernateSearchDef.params() ); return factory.create( map ); }
private String registerCharFilterDef(String analyzerDefinitionName, CharFilterDef hibernateSearchDef) { String remoteName = hibernateSearchDef.name(); CharFilterDefinition elasticsearchDefinition = translator.translate( hibernateSearchDef ); if ( remoteName.isEmpty() && !hasParameters( elasticsearchDefinition ) ) { // No parameters, and no specific name was provided => Use the builtin, default definition remoteName = elasticsearchDefinition.getType(); } else { if ( remoteName.isEmpty() ) { remoteName = analyzerDefinitionName + "_" + hibernateSearchDef.factory().getSimpleName(); } registry.register( remoteName, elasticsearchDefinition ); } return remoteName; }
@Indexed @Entity @NormalizerDef( name = "normalizerWithElasticsearchFactories", charFilters = @CharFilterDef( name = "custom-char-mapping-esFactory", factory = ElasticsearchCharFilterFactory.class, params = { @Parameter(name = "type", value = "'mapping'"), @Parameter(name = "mappings", value = "['foo => bar']"), } ), filters = @TokenFilterDef( name = "custom-elision-esFactory", factory = ElasticsearchTokenFilterFactory.class, params = { @Parameter(name = "type", value = "'elision'"), @Parameter(name = "articles", value = "['l', 'd']") } ) ) public static class NormalizedEntity { @DocumentId @Id Long id; @Field(normalizer = @Normalizer(definition = "normalizerWithElasticsearchFactories")) String myField; } }
private Analyzer buildAnalyzer(TokenizerFactory tokenizerFactory, CharFilterDef[] charFilterDefs, TokenFilterDef[] filterDefs) throws IOException { final int tokenFiltersLength = filterDefs.length; TokenFilterFactory[] filters = new TokenFilterFactory[tokenFiltersLength]; for ( int index = 0; index < tokenFiltersLength; index++ ) { TokenFilterDef filterDef = filterDefs[index]; filters[index] = buildAnalysisComponent( TokenFilterFactory.class, filterDef.factory(), filterDef.params() ); } final int charFiltersLength = charFilterDefs.length; CharFilterFactory[] charFilters = new CharFilterFactory[charFiltersLength]; for ( int index = 0; index < charFiltersLength; index++ ) { CharFilterDef charFilterDef = charFilterDefs[index]; charFilters[index] = buildAnalysisComponent( CharFilterFactory.class, charFilterDef.factory(), charFilterDef.params() ); } return new TokenizerChain( charFilters, tokenizerFactory, filters ); }
@Indexed @NormalizerDef(name = "ngram", charFilters = { @CharFilterDef(factory = PatternReplaceCharFilterFactory.class, params = { @Parameter(name = "pattern", value = "[[:digit:]]+"), @Parameter(name = "pattern", value = "[[:digit:]]"), // Illegal: mentioned the same Parameter name again @Parameter(name = "replacement", value = "0") }) }) static class SampleWithNormalizer { @DocumentId long id; @Field(normalizer = @Normalizer(definition = "ngram")) String description; }
private Analyzer buildAnalyzer(TokenizerFactory tokenizerFactory, CharFilterDef[] charFilterDefs, TokenFilterDef[] filterDefs) throws IOException { final int tokenFiltersLength = filterDefs.length; TokenFilterFactory[] filters = new TokenFilterFactory[tokenFiltersLength]; for ( int index = 0; index < tokenFiltersLength; index++ ) { TokenFilterDef filterDef = filterDefs[index]; filters[index] = buildAnalysisComponent( TokenFilterFactory.class, filterDef.factory(), filterDef.params() ); } final int charFiltersLength = charFilterDefs.length; CharFilterFactory[] charFilters = new CharFilterFactory[charFiltersLength]; for ( int index = 0; index < charFiltersLength; index++ ) { CharFilterDef charFilterDef = charFilterDefs[index]; charFilters[index] = buildAnalysisComponent( CharFilterFactory.class, charFilterDef.factory(), charFilterDef.params() ); } return new TokenizerChain( charFilters, tokenizerFactory, filters ); }
@NormalizerDef( name = "normalizerWithComplexComponents", charFilters = @CharFilterDef( factory = MappingCharFilterFactory.class, params = { @NormalizerDef( name = "normalizerWithNamedComponents", charFilters = @CharFilterDef( name = "custom-char-mapping", factory = MappingCharFilterFactory.class, @NormalizerDef( name = "normalizerWithElasticsearchFactories", charFilters = @CharFilterDef( name = "custom-char-mapping-esFactory", factory = ElasticsearchCharFilterFactory.class,
@AnalyzerDef( name = "analyzerWithElasticsearchFactories", charFilters = @CharFilterDef( name = "custom-pattern-replace", factory = ElasticsearchCharFilterFactory.class,
@AnalyzerDef(name = "html_standard_analyzer", charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }) @AnalyzerDef(name = "length_analyzer", @AnalyzerDef(name = "word_analyzer", charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), @AnalyzerDef(name = "synonym_analyzer", charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), @AnalyzerDef(name = "shingle_analyzer", charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
@AnalyzerDef( name = "analyzerWithElasticsearchFactories", charFilters = @CharFilterDef( name = "custom-pattern-replace", factory = ElasticsearchCharFilterFactory.class,
@AnalyzerDef( name = "analyzerWithSimpleComponents", charFilters = @CharFilterDef(factory = HTMLStripCharFilterFactory.class), tokenizer = @TokenizerDef(factory = WhitespaceTokenizerFactory.class), filters = @TokenFilterDef(factory = LowerCaseFilterFactory.class) @AnalyzerDef( name = "analyzerWithNamedSimpleComponents", charFilters = @CharFilterDef(name = "namedCharFilter", factory = HTMLStripCharFilterFactory.class), tokenizer = @TokenizerDef(name = "namedTokenizer", factory = WhitespaceTokenizerFactory.class), filters = @TokenFilterDef(name = "namedTokenFilter", factory = LowerCaseFilterFactory.class) @AnalyzerDef( name = "analyzerWithComplexComponents", charFilters = @CharFilterDef( factory = HTMLStripCharFilterFactory.class, params = { @AnalyzerDef( name = "analyzerWithNamedComplexComponents", charFilters = @CharFilterDef( name = "custom-html-stripper", factory = HTMLStripCharFilterFactory.class, @AnalyzerDef( name = "analyzerWithElasticsearchFactories", charFilters = @CharFilterDef( name = "custom-pattern-replace", factory = ElasticsearchCharFilterFactory.class,
@AnalyzerDef(name = "html_standard_analyzer", charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), charFilters = { @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }), @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), @CharFilterDef(factory = HTMLStripCharFilterFactory.class) }, tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class) @CharFilterDef(factory = MappingCharFilterFactory.class, params = { @Parameter(name = "mapping", value = "org/hibernate/search/test/analyzer/mapping-chars.properties")