package org.lc.core; import org.elasticsearch.common.settings.Settings; public class AnalysisSetting { public static final String analysisMode = "mode"; public static final String index = "index"; public static final String search = "search"; public static class IndexAnalysisSetting { /*全拼*/ public static final int full_pinyin = 1; /*首字母*/ public static final int first_letter = 2; /*中文单字符*/ public static final int chinese_char = 4; } public static class SearchAnalysisSetting { /*最优拼音拆分*/ public static final int smart_pinyin = 1; /*单字母拆分(用于首字母匹配)*/ public static final int single_letter = 2; } public static int parseIndexAnalysisSettings(Settings settings) { int settingCode = 0; if(settings != null) { String[] defaultSetting = new String[]{"chinese_char", "first_letter", "full_pinyin"}; String[] indexAnalysisSetting = settings.getAsArray(analysisMode, defaultSetting); for (String settingItem : indexAnalysisSetting) { if ("chinese_char".equalsIgnoreCase(settingItem)) { settingCode |= IndexAnalysisSetting.chinese_char; } if ("first_letter".equalsIgnoreCase(settingItem)) { settingCode |= IndexAnalysisSetting.first_letter; } if ("full_pinyin".equalsIgnoreCase(settingItem)) { settingCode |= IndexAnalysisSetting.full_pinyin; } } } if (settingCode == 0) { settingCode = IndexAnalysisSetting.chinese_char | IndexAnalysisSetting.first_letter | IndexAnalysisSetting.full_pinyin; } return settingCode; } public static int parseSearchAnalysisSettings(Settings settings) { if(settings != null) { String setting = settings.get(analysisMode, "smart_pinyin"); if ("single_letter".equalsIgnoreCase(setting)) { return SearchAnalysisSetting.single_letter; } } return SearchAnalysisSetting.smart_pinyin; } }