
org.elasticsearch.plugin.GermanAnalyzersPlugin Maven / Gradle / Ivy
The newest version!
/*
* Made with all the love in the world
* by scireum in Remshalden, Germany
*
* Copyright by scireum GmbH
* http://www.scireum.de - [email protected]
*/
package org.elasticsearch.plugin;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.util.SetOnce;
import org.elasticsearch.client.Client;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
import org.elasticsearch.env.Environment;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AnalyzerProvider;
import org.elasticsearch.indices.analysis.AnalysisModule;
import org.elasticsearch.plugins.AnalysisPlugin;
import org.elasticsearch.plugins.Plugin;
import org.elasticsearch.plugins.SearchPlugin;
import org.elasticsearch.script.ScriptService;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.watcher.ResourceWatcherService;
import sirius.nlp.query.FuzzyAwareMatchQueryBuilder;
import sirius.nlp.service.UpdateSynonymsService;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Provides analyzers for ElasticSearch as a plugin.
*/
public class GermanAnalyzersPlugin extends Plugin implements AnalysisPlugin, SearchPlugin {
/**
* analyzer for standard indexing
*/
public static final String STANDARD_INDEXING = "german_indexing_analyzer";
/**
* analyzer for primary word indexing
*/
public static final String PRIMARY_WORD = "german_primary_word_indexing_analyzer";
/**
* analyzer for autocompletion indexing
*/
public static final String AUTOCOMPLETE = "german_autocomplete_analyzer";
/**
* search analyzer
*/
public static final String SEARCH = "german_search_analyzer";
/**
* search analyzer which injects fuzzy queries
*/
public static final String FUZZY_AWARE_SEARCH = "german_fuzzy_aware_search_analyzer";
/**
* analyzer for query suggestion
*/
public static final String SUGGEST = "german_suggest_analyzer";
private SetOnce synonymService = new SetOnce<>();
@Override
public Map>> getAnalyzers() {
Map>> analyzers = new HashMap<>();
analyzers.put(STANDARD_INDEXING, GermanIndexingAnalyzerProvider::new);
analyzers.put(PRIMARY_WORD, GermanPrimaryWordOnlyIndexingAnalyzerProvider::new);
analyzers.put(AUTOCOMPLETE, GermanAutocompleteIndexingAnalyzerProvider::new);
analyzers.put(SEARCH, new AnalysisModule.AnalysisProvider>() {
@Override
public AnalyzerProvider extends Analyzer> get(IndexSettings indexSettings,
Environment environment,
String name,
Settings settings) throws IOException {
synonymService.get()
.setSynonymFile(environment.configFile().resolve("sirius-sirius.nlp/synonym/custom.txt"));
return new GermanSearchAnalyzerProvider(indexSettings,
environment,
name,
settings,
synonymService.get());
}
});
analyzers.put(FUZZY_AWARE_SEARCH, new AnalysisModule.AnalysisProvider>() {
@Override
public AnalyzerProvider extends Analyzer> get(IndexSettings indexSettings,
Environment environment,
String name,
Settings settings) throws IOException {
return new GermanFuzzyAwareSearchAnalyzerProvider(indexSettings,
environment,
name,
settings,
synonymService.get());
}
});
analyzers.put(SUGGEST, GermanSuggestAnalyzerProvider::new);
return analyzers;
}
@Override
public List> getQueries() {
List> queries = new ArrayList<>();
queries.add(new QuerySpec<>(FuzzyAwareMatchQueryBuilder.NAME,
FuzzyAwareMatchQueryBuilder::new,
FuzzyAwareMatchQueryBuilder::fromXContent));
return queries;
}
@Override
public Collection
© 2015 - 2025 Weber Informatics LLC | Privacy Policy