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
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 }