diff --git a/docs/search-core.verticalsearchrequest.facetallowlist.md b/docs/search-core.verticalsearchrequest.facetallowlist.md new file mode 100644 index 00000000..7d23cab9 --- /dev/null +++ b/docs/search-core.verticalsearchrequest.facetallowlist.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [VerticalSearchRequest](./search-core.verticalsearchrequest.md) > [facetAllowlist](./search-core.verticalsearchrequest.facetallowlist.md) + +## VerticalSearchRequest.facetAllowlist property + +A subset of facet field IDs that facet options will be retrieved for. + +**Signature:** + +```typescript +facetAllowlist?: string[]; +``` diff --git a/docs/search-core.verticalsearchrequest.md b/docs/search-core.verticalsearchrequest.md index abab378c..5735e555 100644 --- a/docs/search-core.verticalsearchrequest.md +++ b/docs/search-core.verticalsearchrequest.md @@ -54,6 +54,25 @@ Description _(Optional)_ Used to trigger Search [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). + + + +[facetAllowlist?](./search-core.verticalsearchrequest.facetallowlist.md) + + + + + + + +string\[\] + + + + +_(Optional)_ A subset of facet field IDs that facet options will be retrieved for. + + diff --git a/etc/search-core.api.md b/etc/search-core.api.md index c258d540..8da9b400 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -880,6 +880,7 @@ export interface VerticalResults { // @public export interface VerticalSearchRequest extends SearchRequest { context?: Context; + facetAllowlist?: string[]; facets?: Facet[]; limit?: number; location?: LatLong; diff --git a/package-lock.json b/package-lock.json index c61c0cd8..0a059c33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.6.3", + "version": "2.6.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.6.3", + "version": "2.6.4", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index 58ac833a..048016d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.6.3", + "version": "2.6.4", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", diff --git a/src/infra/SearchServiceImpl.ts b/src/infra/SearchServiceImpl.ts index 053cad1f..4734400f 100644 --- a/src/infra/SearchServiceImpl.ts +++ b/src/infra/SearchServiceImpl.ts @@ -69,7 +69,8 @@ interface VerticalSearchQueryParams extends QueryParams { source?: QuerySource | string, locationRadius?: string, queryId?: string, - visitor?: string + visitor?: string, + facetAllowlist?: string } /** @@ -167,6 +168,7 @@ export class SearchServiceImpl implements SearchService { queryId: request.queryId, visitorId: this.config.visitor?.id, visitorIdMethod: this.config.visitor?.idMethod, + facetAllowlist: request.facetAllowlist?.join(','), ...this.config?.additionalQueryParams }; @@ -200,4 +202,4 @@ export class SearchServiceImpl implements SearchService { } return `${latLong.latitude},${latLong.longitude}`; } -} \ No newline at end of file +} diff --git a/src/models/searchservice/request/VerticalSearchRequest.ts b/src/models/searchservice/request/VerticalSearchRequest.ts index b9cdf9ab..616c0636 100644 --- a/src/models/searchservice/request/VerticalSearchRequest.ts +++ b/src/models/searchservice/request/VerticalSearchRequest.ts @@ -48,5 +48,7 @@ export interface VerticalSearchRequest extends SearchRequest { /** The radius (in meters) to filter the vertical search by. */ locationRadius?: number, /** The queryId for the query, if this is a repeat query. */ - queryId?: string -} \ No newline at end of file + queryId?: string, + /** A subset of facet field IDs that facet options will be retrieved for. */ + facetAllowlist?: string[] +} diff --git a/test-site/index.html b/test-site/index.html index 9de8956f..26a82d4c 100644 --- a/test-site/index.html +++ b/test-site/index.html @@ -15,5 +15,6 @@ + diff --git a/test-site/src/js/index.js b/test-site/src/js/index.js index ddc361ca..e890696b 100644 --- a/test-site/src/js/index.js +++ b/test-site/src/js/index.js @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { provideCore } from '@yext/search-core'; -import { verticalRequest, functionVerticalRequest } from './requests/verticalRequest'; +import { verticalRequest, functionVerticalRequest, locationsVerticalRequest } from './requests/verticalRequest'; import universalRequest from './requests/universalRequest'; import questionRequest from './requests/questionRequest'; import { univeralAutocompleteRequest, verticalAutocompleteRequest, filterSearchRequest } from './requests/autocompleteRequests'; @@ -76,6 +76,13 @@ export async function functionVerticalSearch() { updateUI(results, startTime, 'Core Function Vertical Response:'); } +export async function locationsVerticalSearch() { + loadingSpinner(); + const startTime = new Date().getTime(); + const results = await globalCore.verticalSearch(locationsVerticalRequest); + updateUI(results, startTime, 'Locations Vertical Response:'); +} + function loadingSpinner() { element.textContent = 'Loading...'; } diff --git a/test-site/src/js/requests/verticalRequest.js b/test-site/src/js/requests/verticalRequest.js index e5805288..31a64da2 100644 --- a/test-site/src/js/requests/verticalRequest.js +++ b/test-site/src/js/requests/verticalRequest.js @@ -12,7 +12,14 @@ export const verticalRequest = { referrerPageUrl: 'www.google.com/answers/not/ads' }; +export const locationsVerticalRequest = { + verticalKey: 'KM', + query: 'virginia', + retrieveFacets: true, + facetAllowlist: ['address.city', 'services'] +}; + export const functionVerticalRequest = { verticalKey: 'function_vertical', query: 'virginia', -}; \ No newline at end of file +}; diff --git a/test-site/src/ts/index.ts b/test-site/src/ts/index.ts index ad0c4b4f..5895abaa 100644 --- a/test-site/src/ts/index.ts +++ b/test-site/src/ts/index.ts @@ -1,5 +1,9 @@ import { provideCore, SearchConfig, SearchCore, UniversalSearchRequest, UniversalSearchResponse } from '@yext/search-core'; -import { verticalRequest, functionVerticalRequest } from './requests/verticalRequest'; +import { + verticalRequest, + functionVerticalRequest, + locationsVerticalRequest +} from './requests/verticalRequest'; import universalRequest from './requests/universalRequest'; import questionRequest from './requests/questionRequest'; import { univeralAutocompleteRequest, verticalAutocompleteRequest, filterSearchRequest } from './requests/autocompleteRequests'; @@ -51,6 +55,13 @@ export async function functionVerticalSearch(): Promise { updateUI(results, startTime, 'Core Function Vertical Response:'); } +export async function locationsVerticalSearch(): Promise { + loadingSpinner(); + const startTime = new Date().getTime(); + const results = await globalCore.verticalSearch(locationsVerticalRequest); + updateUI(results, startTime, 'Locations Vertical Response:'); +} + export async function submitQuestion(): Promise { loadingSpinner(); const startTime = new Date().getTime(); diff --git a/test-site/src/ts/requests/verticalRequest.ts b/test-site/src/ts/requests/verticalRequest.ts index 355d7565..b32f12ab 100644 --- a/test-site/src/ts/requests/verticalRequest.ts +++ b/test-site/src/ts/requests/verticalRequest.ts @@ -17,7 +17,14 @@ export const verticalRequest: VerticalSearchRequest = { } }; +export const locationsVerticalRequest: VerticalSearchRequest = { + verticalKey: 'KM', + query: 'virginia', + retrieveFacets: true, + facetAllowlist: ['address.city', 'services'] +}; + export const functionVerticalRequest: VerticalSearchRequest = { verticalKey: 'function_vertical', query: 'virginia', -}; \ No newline at end of file +};