diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java index 833236d238..1f0ec329f6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java @@ -433,6 +433,7 @@ public class GmsGraphQLEngine { private final ViewsConfiguration viewsConfiguration; private final SearchBarConfiguration searchBarConfiguration; private final SearchCardConfiguration searchCardConfiguration; + private final SearchFlagsConfiguration searchFlagsConfiguration; private final HomePageConfiguration homePageConfiguration; private final ChromeExtensionConfiguration chromeExtensionConfiguration; @@ -570,6 +571,7 @@ public class GmsGraphQLEngine { this.viewsConfiguration = args.viewsConfiguration; this.searchBarConfiguration = args.searchBarConfiguration; this.searchCardConfiguration = args.searchCardConfiguration; + this.searchFlagsConfiguration = args.searchFlagsConfiguration; this.homePageConfiguration = args.homePageConfiguration; this.featureFlags = args.featureFlags; this.chromeExtensionConfiguration = args.chromeExtensionConfiguration; @@ -981,6 +983,7 @@ public class GmsGraphQLEngine { this.viewsConfiguration, this.searchBarConfiguration, this.searchCardConfiguration, + this.searchFlagsConfiguration, this.homePageConfiguration, this.featureFlags, this.chromeExtensionConfiguration, diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngineArgs.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngineArgs.java index 6109c9b665..53a215e875 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngineArgs.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngineArgs.java @@ -71,6 +71,7 @@ public class GmsGraphQLEngineArgs { ViewsConfiguration viewsConfiguration; SearchBarConfiguration searchBarConfiguration; SearchCardConfiguration searchCardConfiguration; + SearchFlagsConfiguration searchFlagsConfiguration; HomePageConfiguration homePageConfiguration; SiblingGraphService siblingGraphService; GroupService groupService; diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/config/AppConfigResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/config/AppConfigResolver.java index 8facdc7eda..e88e4c8410 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/config/AppConfigResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/config/AppConfigResolver.java @@ -36,6 +36,7 @@ public class AppConfigResolver implements DataFetcher { const { trackClearAllFiltersEvent } = useSearchFilterAnalytics(); + const { config } = useAppConfig(); const showSearchFiltersV2 = useIsSearchV2(); const showBrowseV2 = useIsBrowseV2(); const searchVersion = useSearchVersion(); @@ -77,7 +79,11 @@ export const SearchPage = () => { orFilters, viewUrn, sortInput, - searchFlags: { getSuggestions: true, includeStructuredPropertyFacets: true }, + searchFlags: { + getSuggestions: true, + includeStructuredPropertyFacets: true, + skipHighlighting: config?.searchFlagsConfig?.defaultSkipHighlighting || false, + }, }, }, fetchPolicy: 'cache-and-network', diff --git a/datahub-web-react/src/app/searchV2/searchBarV2/hooks/useSearchBarData.ts b/datahub-web-react/src/app/searchV2/searchBarV2/hooks/useSearchBarData.ts index 1cf0448120..1a35a93bff 100644 --- a/datahub-web-react/src/app/searchV2/searchBarV2/hooks/useSearchBarData.ts +++ b/datahub-web-react/src/app/searchV2/searchBarV2/hooks/useSearchBarData.ts @@ -75,6 +75,8 @@ const useAutocompleteAPI = (): APIResponse => { }; const useSearchAPI = (): APIResponse => { + const { config } = useAppConfig(); + const [entitiesWithMatchedFields, setEntitiesWithMatchedFields] = useState(); const [facets, setFacets] = useState(); @@ -96,12 +98,15 @@ const useSearchAPI = (): APIResponse => { viewUrn, orFilters, count: SEARCH_API_RESPONSE_MAX_ITEMS, + searchFlags: { + skipHighlighting: config?.searchFlagsConfig?.defaultSkipHighlighting || false, + }, }, }, }); } }, - [getSearchResultsForMultiple], + [getSearchResultsForMultiple, config?.searchFlagsConfig?.defaultSkipHighlighting], ); useEffect(() => { diff --git a/datahub-web-react/src/appConfigContext.tsx b/datahub-web-react/src/appConfigContext.tsx index 42b1b25c6e..7e6f80ca8d 100644 --- a/datahub-web-react/src/appConfigContext.tsx +++ b/datahub-web-react/src/appConfigContext.tsx @@ -50,6 +50,9 @@ export const DEFAULT_APP_CONFIG = { searchCardConfig: { showDescription: false, }, + searchFlagsConfig: { + defaultSkipHighlighting: false, + }, homePageConfig: { firstInPersonalSidebar: PersonalSidebarSection.YourAssets, }, diff --git a/datahub-web-react/src/graphql/app.graphql b/datahub-web-react/src/graphql/app.graphql index 0441a33c60..9fd1867c5b 100644 --- a/datahub-web-react/src/graphql/app.graphql +++ b/datahub-web-react/src/graphql/app.graphql @@ -72,6 +72,9 @@ query appConfig { searchCardConfig { showDescription } + searchFlagsConfig { + defaultSkipHighlighting + } homePageConfig { firstInPersonalSidebar } diff --git a/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java b/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java index b0ea408c97..d5f6af10ea 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java @@ -790,6 +790,7 @@ public class PropertiesCollectorConfigurationTest extends AbstractTestNGSpringCo "platformAnalytics.usageExport.userFilters", "searchBar.apiVariant", "searchCard.showDescription", + "searchFlags.defaultSkipHighlighting", "searchService.cache.hazelcast.serviceName", "searchService.cache.hazelcast.service-dns-timeout", "searchService.cache.hazelcast.kubernetes-api-retries", diff --git a/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/DataHubAppConfiguration.java b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/DataHubAppConfiguration.java index 6213cbbee6..04897730e7 100644 --- a/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/DataHubAppConfiguration.java +++ b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/DataHubAppConfiguration.java @@ -40,6 +40,9 @@ public class DataHubAppConfiguration { /** Search card related configs */ private SearchCardConfiguration searchCard; + /** Search flags related configs */ + private SearchFlagsConfiguration searchFlags; + /** Home page related configs */ private HomePageConfiguration homePage; diff --git a/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/SearchFlagsConfiguration.java b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/SearchFlagsConfiguration.java new file mode 100644 index 0000000000..5f0faab76c --- /dev/null +++ b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/SearchFlagsConfiguration.java @@ -0,0 +1,10 @@ +package com.linkedin.metadata.config; + +import lombok.Data; + +/** POJO representing the "searchFlags" configuration block in application.yaml.on.yml */ +@Data +public class SearchFlagsConfiguration { + /** Default value for skipHighlighing flag */ + public Boolean defaultSkipHighlighting; +} diff --git a/metadata-service/configuration/src/main/resources/application.yaml b/metadata-service/configuration/src/main/resources/application.yaml index 50b4069c59..594cb5a1bc 100644 --- a/metadata-service/configuration/src/main/resources/application.yaml +++ b/metadata-service/configuration/src/main/resources/application.yaml @@ -866,6 +866,9 @@ searchBar: searchCard: showDescription: ${SEARCH_CARD_SHOW_DESCRIPTION:false} +searchFlags: + defaultSkipHighlighting: ${DEFAULT_SKIP_HIGHLIGHTING:false} + homePage: firstInPersonalSidebar: ${FIRST_IN_PERSONAL_SIDEBAR:YOUR_ASSETS} diff --git a/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java b/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java index 89ad7a7552..b5b1a8d9f7 100644 --- a/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java +++ b/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java @@ -261,6 +261,7 @@ public class GraphQLEngineFactory { args.setViewsConfiguration(configProvider.getViews()); args.setSearchBarConfiguration(configProvider.getSearchBar()); args.setSearchCardConfiguration(configProvider.getSearchCard()); + args.setSearchFlagsConfiguration(configProvider.getSearchFlags()); args.setHomePageConfiguration(configProvider.getHomePage()); args.setSiblingGraphService(siblingGraphService); args.setGroupService(groupService);