mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-13 01:38:35 +00:00
fix(filters) Fix autocomplete for platforms and improve advanced search builder (#12560)
This commit is contained in:
parent
8dfd8fbbaf
commit
610e5a899e
@ -2,15 +2,26 @@ package com.linkedin.datahub.graphql.types.dataplatform;
|
|||||||
|
|
||||||
import static com.linkedin.metadata.Constants.*;
|
import static com.linkedin.metadata.Constants.*;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.linkedin.common.urn.Urn;
|
import com.linkedin.common.urn.Urn;
|
||||||
import com.linkedin.common.urn.UrnUtils;
|
import com.linkedin.common.urn.UrnUtils;
|
||||||
import com.linkedin.datahub.graphql.QueryContext;
|
import com.linkedin.datahub.graphql.QueryContext;
|
||||||
|
import com.linkedin.datahub.graphql.generated.AutoCompleteResults;
|
||||||
import com.linkedin.datahub.graphql.generated.DataPlatform;
|
import com.linkedin.datahub.graphql.generated.DataPlatform;
|
||||||
import com.linkedin.datahub.graphql.generated.Entity;
|
import com.linkedin.datahub.graphql.generated.Entity;
|
||||||
|
import com.linkedin.datahub.graphql.generated.FacetFilterInput;
|
||||||
|
import com.linkedin.datahub.graphql.generated.SearchResults;
|
||||||
|
import com.linkedin.datahub.graphql.resolvers.ResolverUtils;
|
||||||
import com.linkedin.datahub.graphql.types.EntityType;
|
import com.linkedin.datahub.graphql.types.EntityType;
|
||||||
|
import com.linkedin.datahub.graphql.types.SearchableEntityType;
|
||||||
import com.linkedin.datahub.graphql.types.dataplatform.mappers.DataPlatformMapper;
|
import com.linkedin.datahub.graphql.types.dataplatform.mappers.DataPlatformMapper;
|
||||||
|
import com.linkedin.datahub.graphql.types.mappers.AutoCompleteResultsMapper;
|
||||||
|
import com.linkedin.datahub.graphql.types.mappers.UrnSearchResultsMapper;
|
||||||
import com.linkedin.entity.EntityResponse;
|
import com.linkedin.entity.EntityResponse;
|
||||||
import com.linkedin.entity.client.EntityClient;
|
import com.linkedin.entity.client.EntityClient;
|
||||||
|
import com.linkedin.metadata.query.AutoCompleteResult;
|
||||||
|
import com.linkedin.metadata.query.filter.Filter;
|
||||||
|
import com.linkedin.metadata.search.SearchResult;
|
||||||
import graphql.execution.DataFetcherResult;
|
import graphql.execution.DataFetcherResult;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -18,8 +29,11 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class DataPlatformType implements EntityType<DataPlatform, String> {
|
public class DataPlatformType
|
||||||
|
implements SearchableEntityType<DataPlatform, String>, EntityType<DataPlatform, String> {
|
||||||
|
|
||||||
private final EntityClient _entityClient;
|
private final EntityClient _entityClient;
|
||||||
|
|
||||||
@ -75,4 +89,39 @@ public class DataPlatformType implements EntityType<DataPlatform, String> {
|
|||||||
public Function<Entity, String> getKeyProvider() {
|
public Function<Entity, String> getKeyProvider() {
|
||||||
return Entity::getUrn;
|
return Entity::getUrn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchResults search(
|
||||||
|
@Nonnull String query,
|
||||||
|
@Nullable List<FacetFilterInput> filters,
|
||||||
|
int start,
|
||||||
|
int count,
|
||||||
|
@Nonnull final QueryContext context)
|
||||||
|
throws Exception {
|
||||||
|
final Map<String, String> facetFilters =
|
||||||
|
ResolverUtils.buildFacetFilters(filters, ImmutableSet.of());
|
||||||
|
final SearchResult searchResult =
|
||||||
|
_entityClient.search(
|
||||||
|
context.getOperationContext().withSearchFlags(flags -> flags.setFulltext(true)),
|
||||||
|
DATA_PLATFORM_ENTITY_NAME,
|
||||||
|
query,
|
||||||
|
facetFilters,
|
||||||
|
start,
|
||||||
|
count);
|
||||||
|
return UrnSearchResultsMapper.map(context, searchResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AutoCompleteResults autoComplete(
|
||||||
|
@Nonnull String query,
|
||||||
|
@Nullable String field,
|
||||||
|
@Nullable Filter filters,
|
||||||
|
int limit,
|
||||||
|
@Nonnull final QueryContext context)
|
||||||
|
throws Exception {
|
||||||
|
final AutoCompleteResult result =
|
||||||
|
_entityClient.autoComplete(
|
||||||
|
context.getOperationContext(), DATA_PLATFORM_ENTITY_NAME, query, filters, limit);
|
||||||
|
return AutoCompleteResultsMapper.map(context, result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user