View Javadoc
1   package org.wikimedia.search.extra.analysis.ukrainian;
2   
3   import java.util.ArrayList;
4   import java.util.Collections;
5   import java.util.HashMap;
6   import java.util.List;
7   import java.util.Map;
8   
9   import org.elasticsearch.index.analysis.PreConfiguredTokenFilter;
10  import org.elasticsearch.index.analysis.TokenFilterFactory;
11  import org.elasticsearch.indices.analysis.AnalysisModule.AnalysisProvider;
12  import org.elasticsearch.plugins.AnalysisPlugin;
13  import org.elasticsearch.plugins.Plugin;
14  
15  /**
16   * Setup the Elasticsearch plugin.
17   */
18  public class ExtraAnalysisUkrainianPlugin extends Plugin implements AnalysisPlugin {
19  
20      @Override
21      public Map<String, AnalysisProvider<TokenFilterFactory>> getTokenFilters() {
22          Map<String, AnalysisProvider<TokenFilterFactory>> map = new HashMap<>();
23          map.put("ukrainian_stop", UkrainianStopFilterFactory::new);
24          map.put("ukrainian_stemmer", UkrainianStemmerFilterFactory::new);
25          return Collections.unmodifiableMap(map);
26      }
27  
28      @Override
29      public List<PreConfiguredTokenFilter> getPreConfiguredTokenFilters() {
30          List<PreConfiguredTokenFilter> list = new ArrayList<>();
31          list.add(PreConfiguredTokenFilter.singleton("ukrainian_stop", true, in -> new UkrainianStopFilter(in, UkrainianStopFilterFactory.UK_STOP)));
32          list.add(PreConfiguredTokenFilter.singleton("ukrainian_stemmer", true, in -> new UkrainianStemmerFilter(in, UkrainianStemmerFilterFactory.UK_DICT)));
33          return Collections.unmodifiableList(list);
34      }
35  
36  }