package org.xbib.elasticsearch.index.analysis.naturalsort;
import org.apache.lucene.analysis.core.KeywordTokenizer;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.env.Environment;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AbstractIndexAnalyzerProvider;
import java.text.Collator;
import java.util.Locale;
/**
*
*/
public class NaturalSortKeyAnalyzerProvider extends AbstractIndexAnalyzerProvider<NaturalSortKeyAnalyzer> {
private final Collator collator;
private final int digits;
private final int maxTokens;
private final int bufferSize;
public NaturalSortKeyAnalyzerProvider(IndexSettings indexSettings, Environment environment, String name,
Settings settings) {
super(indexSettings, name, settings);
this.collator = createCollator(settings);
this.digits = settings.getAsInt("digits", 1);
this.maxTokens = settings.getAsInt("maxTokens", 2);
this.bufferSize = settings.getAsInt("bufferSize", KeywordTokenizer.DEFAULT_BUFFER_SIZE);
}
protected static Collator createCollator(Settings settings) {
return Collator.getInstance(new Locale(settings.get("locale", Locale.getDefault().toString())));
}
@Override
public NaturalSortKeyAnalyzer get() {
return new NaturalSortKeyAnalyzer(collator, bufferSize, digits, maxTokens);
}
}