org.openmetadata.service.search.indexes.UserIndex Maven / Gradle / Ivy
package org.openmetadata.service.search.indexes;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.openmetadata.common.utils.CommonUtil;
import org.openmetadata.schema.entity.teams.User;
import org.openmetadata.service.Entity;
import org.openmetadata.service.search.models.SearchSuggest;
public class UserIndex implements SearchIndex {
final User user;
final Set excludeFields = Set.of("owns", "follows", "authenticationMechanism");
public UserIndex(User user) {
this.user = user;
}
@Override
public List getSuggest() {
List suggest = new ArrayList<>();
suggest.add(SearchSuggest.builder().input(user.getName()).weight(5).build());
suggest.add(SearchSuggest.builder().input(user.getDisplayName()).weight(10).build());
return suggest;
}
@Override
public Object getEntity() {
return user;
}
@Override
public Set getExcludedFields() {
return excludeFields;
}
public Map buildSearchIndexDocInternal(Map doc) {
Map commonAttributes = getCommonAttributesMap(user, Entity.USER);
doc.putAll(commonAttributes);
doc.put(
"displayName",
CommonUtil.nullOrEmpty(user.getDisplayName()) ? user.getName() : user.getDisplayName());
if (user.getIsBot() == null) {
doc.put("isBot", false);
}
return doc;
}
public static Map getFields() {
return SearchIndex.getDefaultFields();
}
}