private static HighlightBuilder.Field createHighlighterField() { HighlightBuilder.Field field = new HighlightBuilder.Field(FIELD_NAME); field.highlighterType("fvh"); field.matchedFields( Stream.concat( Stream.of(FIELD_NAME), Arrays .stream(NAME_ANALYZERS) .map(a -> a.subField(FIELD_NAME))) .toArray(String[]::new)); return field; }
public String getSubFieldSuffix() { return getName(); }
/** * Add subfields, one for each analyzer. */ public T addSubFields(DefaultIndexSettingsElement... analyzers) { Arrays.stream(analyzers) .forEach(analyzer -> addSubField(analyzer.getSubFieldSuffix(), analyzer.fieldMapping())); return castThis(); }
public String subField(String fieldName) { return fieldName + SUB_FIELD_DELIMITER + getSubFieldSuffix(); }
static Settings.Builder defaults() { Settings.Builder builder = Settings.builder() .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) .put("index.refresh_interval", "30s") .put("index.mapper.dynamic", false); Arrays.stream(DefaultIndexSettingsElement.values()) .map(DefaultIndexSettingsElement::settings) .forEach(builder::put); return builder; } }
private static String appendSortSuffixIfNeeded(String field) { return field + ((field.equals(FIELD_RULE_NAME) || field.equals(FIELD_RULE_KEY)) ? ("." + SORTABLE_ANALYZER.getSubFieldSuffix()) : ""); }
static Settings.Builder defaults() { Settings.Builder builder = Settings.builder() .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) .put("index.refresh_interval", "30s") .put("index.mapper.dynamic", false); Arrays.stream(DefaultIndexSettingsElement.values()) .map(DefaultIndexSettingsElement::settings) .forEach(builder::put); return builder; } }
@Override QueryBuilder getQuery(String queryText) { String lowerCaseQueryText = queryText.toLowerCase(Locale.ENGLISH); return prefixAndPartialQuery(lowerCaseQueryText, SORTABLE_ANALYZER.subField(FIELD_NAME), FIELD_NAME) .boost(3f); } },
@Override public SortedMap<String, String> fieldMapping() { return ImmutableSortedMap.of( TYPE, FIELD_TYPE_TEXT, INDEX, INDEX_SEARCHABLE, ANALYZER, INDEX_PREFIX_ANALYZER.getName(), SEARCH_ANALYZER, getName()); } },
/** * Add subfields, one for each analyzer. */ public T addSubFields(DefaultIndexSettingsElement... analyzers) { Arrays.stream(analyzers) .forEach(analyzer -> addSubField(analyzer.getSubFieldSuffix(), analyzer.fieldMapping())); return castThis(); }
public String subField(String fieldName) { return fieldName + SUB_FIELD_DELIMITER + getSubFieldSuffix(); }
@Override QueryBuilder getQuery(String queryText) { return matchQuery(SORTABLE_ANALYZER.subField(FIELD_NAME), queryText) .boost(2.5f); } },