org.openmetadata.service.search.indexes.QueryIndex Maven / Gradle / Ivy
package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.QUERY;
import static org.openmetadata.service.search.EntityBuilderConstant.QUERY_NGRAM;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.openmetadata.schema.entity.data.Query;
import org.openmetadata.service.Entity;
import org.openmetadata.service.search.ParseTags;
import org.openmetadata.service.search.models.SearchSuggest;
public class QueryIndex implements SearchIndex {
final Query query;
public QueryIndex(Query query) {
this.query = query;
}
@Override
public List getSuggest() {
List suggest = new ArrayList<>();
if (query.getDisplayName() != null) {
suggest.add(SearchSuggest.builder().input(query.getName()).weight(10).build());
}
return suggest;
}
@Override
public Object getEntity() {
return query;
}
public Map buildSearchIndexDocInternal(Map doc) {
ParseTags parseTags = new ParseTags(Entity.getEntityTags(Entity.QUERY, query));
Map commonAttributes = getCommonAttributesMap(query, Entity.QUERY);
doc.putAll(commonAttributes);
doc.put("displayName", query.getDisplayName() != null ? query.getDisplayName() : "");
doc.put("tags", parseTags.getTags());
doc.put("tier", parseTags.getTierTag());
return doc;
}
public static Map getFields() {
Map fields = SearchIndex.getDefaultFields();
fields.put(QUERY, 10.0f);
fields.put(QUERY_NGRAM, 1.0f);
return fields;
}
}