Interfaces
- Search Input Interfaces
- Search Interfaces
- Search Results Interfaces
- Facets Interfaces
- Pagination Interfaces
- Search Feedback Interfaces
- Related Searches Interfaces
- Promotions Interfaces
- Sorting Interfaces
Search Input Interfaces
export interface ISearchstaxSearchInputConfig {
suggestAfterMinChars: number; // controls how many characters the UI should accept at the minimum before showing suggestions
templates?: ISearchstaxSearchInputConfigTemplates; // optional object that defines template override options
hooks?: { // optional object that provides various hook options
beforeAutosuggest?: (props: ISearchstaxSuggestProps) => ISearchstaxSuggestProps | null; // this function gets called before firing autosuggest. autosuggestProps are being passed as a property and can be modified, if passed along further search will execute with modified properties, if null is returned then event gets canceled and search never fires.
afterAutosuggest?: (result: ISearchstaxSuggestResponse) => ISearchstaxSuggestResponse; // this function gets called after autosuggest has values but before rendering. It needs to return same type of data but it can be modified.
};
}
export interface ISearchstaxSearchProps {
term: string;
queryParams: string[];
}
export interface ISearchstaxSuggestProps {
term: string;
queryParams: IAdditionalProp[];
}
export interface ISearchstaxSearchInputConfigTemplates {
mainTemplate?: ISearchstaxSearchInputMainTemplateData; // optional object for overriding main template
autosuggestItemTemplate?: ISearchstaxSearchInputAutosuggestTemplateData; // autosuggest item template in Mustache
}
export interface ISearchstaxSearchInputMainTemplateData{
template: string; // main template in Mustache templating language
searchInputId: string; // id of search input within the mainTemplate
}
export interface ISearchstaxSearchInputAutosuggestTemplateData{
template: string; // autosuggest template in Mustache templating language
}
Search Interfaces
export interface ISearchstaxSuggestResponseHeader {
zkConnected: boolean;
status: number;
qTime: number;
}
export interface ISearchstaxSuggestion {
term: string;
weight: number;
payload: string;
}
export interface ISearchstaxSEARCHTERM {
numFound: number;
suggestions: ISearchstaxSuggestion[];
}
export interface ISearchstaxStudio_suggestor_LANG {
[key: string]: ISearchstaxSEARCHTERM;
}
export interface ISearchstaxSuggest {
[key: string]: ISearchstaxStudio_suggestor_LANG;
}
export interface ISearchstaxSuggestResponse {
responseHeader: ISearchstaxSuggestResponseHeader;
suggest: ISearchstaxSuggest;
}
Search Results Interfaces
export interface ISearchstaxParam {
q: string;
language: string;
echoParams: string;
wt: string;
rows: string;
hl: string;
"hl.snippets": string;
facet: string;
fl: string;
"facet.field": string[];
"f.content_type_facet.facet.limit": string;
"f.content_type_facet.facet.mincount": string;
"f.content_type_facet.facet.sort": string;
"f.author_name.facet.limit": string;
"f.author_name.facet.mincount": string;
"f.author_name.facet.sort": string;
"f.meta_keywords_facet.facet.limit": string;
"f.meta_keywords_facet.facet.mincount": string;
"f.meta_keywords_facet.facet.sort": string;
defType: string;
qf: string;
uniqueId: string;
"spellcheck.q": string;
"spellcheck.accuracy": string;
"spellcheck.extendedResults": string;
spellcheck: string;
"spellcheck.dictionary": string;
"spellcheck.count": string;
bq: string;
bf: string;
rid: string;
autoCorrectedQ?: string;
}
export interface ISearchstaxResponseHeader {
zkConnected: boolean;
status: number;
QTime: number;
params: ISearchstaxParam;
}
export interface ISearchstaxDocCommon {
[key: string]: string | string[] | boolean;
}
export interface ISearchstaxDoc extends ISearchstaxDocCommon {
"[elevated]": boolean;
}
export interface ISearchstaxParsedResult {
custom?: any;
ribbon: string | null;
paths: string | null;
url: string | null;
title: string | null;
promoted: boolean | null;
thumbnail: string | null;
date: string | null;
snippet: string | null;
description: string | null;
uniqueId: string;
position: number;
unmappedFields: { key: string; value: string | string[] | boolean; isImage?: boolean }[];
allFields: { key: string; value: string | string[] | boolean }[];
}
export interface ISearchstaxSearchMetadata {
recordsPerPageValue: number;
startDocVal: number;
totalResultsValue: number;
latency: number;
endDocValue: number;
spellingSuggestion: string;
autoCorrectedQuery: string;
impressions: ISearchstaxImpression[];
}
export interface ISearchstaxImpression {
cDocId: string;
cDocTitle: string;
position: number;
}
export interface ISearchstaxRelatedImpression {
relatedSearch: string;
position: number;
}
export interface ISearchstaxResponse {
numFound: number;
start: number;
numFoundExact: boolean;
docs: ISearchstaxDoc[];
}
export interface ISearchstaxFacet_query {}
export interface ISearchstaxFacet_field {
content_type_facet: any[];
author_name: any[];
meta_keywords_facet: any[];
}
export interface ISearchstaxFacet_range {}
export interface ISearchstaxFacet_interval {}
export interface ISearchstaxFacet_heatmap {}
export interface ISearchstaxFacet_count {
facet_queries: ISearchstaxFacet_query;
facet_fields: ISearchstaxFacet_field;
facet_ranges: ISearchstaxFacet_range;
facet_intervals: ISearchstaxFacet_interval;
facet_heatmaps: ISearchstaxFacet_heatmap;
}
export interface Spellcheck {
suggestions: any[];
correctlySpelled: boolean;
}
export interface ISearchstaxFacet {
name: string;
label: string;
}
export interface ISearchstaxResult {
name: string;
title: string;
result_card: string;
}
export interface ISearchstaxSort {
id: number;
name: string;
order: string;
label: string;
}
export interface IExternalPromotion {
name: string;
id: number;
url: string;
description: string;
}
export interface ISearchstaxMetadata {
facets: ISearchstaxFacet[];
results: ISearchstaxResult[];
sorts: ISearchstaxSort[];
}
export interface ISearchstaxSearchResponse {
responseHeader: ISearchstaxResponseHeader;
response: ISearchstaxResponse;
facet_counts: ISearchstaxFacet_count;
spellcheck: Spellcheck;
metadata: ISearchstaxMetadata;
externalLinks?: IExternalPromotion[];
}
export interface ISearchstaxParsedData {
currentPage: number;
totalResults: number;
resultsPerPage: number;
isFirstPage: boolean;
results: ISearchstaxParsedResult[];
isLastPage: boolean;
hasResults: boolean;
hasResultsOrExternalPromotions: boolean;
searchExecuted: boolean;
hasRelatedSearches: boolean;
hasExternalPromotions: boolean;
startResultIndex: number;
endResultIndex: number;
searchTerm: string;
autoCorrectedQuery: string;
originalQuery: string;
selectedFacets: (IFacetValue | IFacetValueRange)[];
relatedSearches: ISearchstaxRelatedSearchResult[];
externalPromotions: IExternalPromotion[];
}
export interface ISearchstaxSearchResultsConfig {
templates?: ISearchstaxSearchResultsConfigTemplates; // optional object that defines template override options
hooks?: { // optional object that provides various hook options
afterLinkClick?: (
resultClicked: ISearchstaxParsedResult
) => ISearchstaxParsedResult | null; // function is called after user clicks result and passes that result as a property. when result is passed along tracking will execute and user will be navigated if null is returned events are canceled and nothing happens.
};
}
export interface ISearchstaxSearchResultsConfigTemplates {
mainTemplate?: ISearchstaxResultsMainTemplateData;
searchResultTemplate?: ISearchstaxResultsResultTemplateData;
noSearchResultTemplate?: ISearchstaxResultsNoResultTemplateData;
}
export interface ISearchstaxResultsMainTemplateData {
template: string; // main template in Mustache templating language
searchResultsContainerId: string; // this is needed only if mainTemplate is overridden. It points to an element in the template where results need to be rendered
}
export interface ISearchstaxResultsResultTemplateData {
template: string; // result template using Mustache. ISearchstaxParsedResult is passed to the template and all its properties are available to be used when rendering;
searchResultUniqueIdAttribute: string; // this is needed only if searchResultTemplate is overridden. searchResultTemplate needs to have unique result id property. Default is data-searchstax-unique-result-id="niqueId". see example below on how it is used
}
export interface ISearchstaxResultsNoResultTemplateData {
template: string; // Mustache template for no results section override. spellingSuggestion and searchTerm are values available in the template
}
export interface ISearchstaxParsedResult {
custom?: any;
ribbon: string | null;
paths: string | null;
url: string | null;
title: string | null;
promoted: boolean | null;
thumbnail: string | null;
date: string | null;
snippet: string | null;
description: string | null;
uniqueId: string;
position: number;
unmappedFields: { key: string; value: string | string[] | boolean; isImage?: boolean }[];
allFields: { key: string; value: string | string[] | boolean }[];
}
Facets Interfaces
export interface IFacet {
name: string;
label: string;
values: (IFacetValue | IFacetValueRange)[];
}
export interface IFacetValue {
value: string;
type: 'checkbox';
parentName: string;
count: number;
}
export interface IFacetValueRange {
valueFrom: string;
type: 'range';
valueTo: string;
parentName: string;
count: number;
}
export interface IFacetData extends IFacet{
values: (IFacetValue | IFacetValueRange)[];
showingAllFacets?: boolean;
hasMoreFacets?: boolean;
}
export interface IFacetsTemplateData extends ISearchstaxParsedData{
facets: IFacetData[];
isMobile?: boolean;
}
export interface IFacetValueData extends IFacetValue {
disabled?: boolean;
}
export interface ISearchstaxSearchFacetsConfig {
facetingType: "and" | "or" | "showUnavailable" | "tabs"; // type that determines how facets will behave
specificFacets?: string[]; // optional array of facet names that if provided will only render those facets
itemsPerPageDesktop: number; // default expanded facets for desktop
itemsPerPageMobile: number; // default expanded facets for mobile
templates?: ISearchstaxSearchFacetsClearFacetsTemplates; // optional object that defines template override options
}
export interface ISearchstaxSearchFacetsClearFacetsTemplates {
mainTemplateDesktop?: ISearchstaxSearchFacetsMainTemplateData; // optional object for overriding main template
mainTemplateMobile?: ISearchstaxSearchFacetsMainMobileTemplate; // optional object for overriding main mobile template
showMoreButtonContainerTemplate?: ISearchstaxSearchFacetsShowMoreTemplateData; // optional object for overriding facet section show more/less template
facetItemContainerTemplate?: ISearchstaxSearchFacetsItemContainerTemplateData; // optional object for overriding facet container template
clearFacetsTemplate?: ISearchstaxSearchFacetsselectedFacetsTemplateData; // optional object for overriding clear facets container template
facetItemTemplate?: ISearchstaxSearchFacetsItemTemplateData; // optional object for overriding clear facet item template
filterByTemplate?: ISearchstaxSearchFacetsFilterByTemplateData; // optional object for overriding filter by button template
selectedFacetsTemplate?: ISearchstaxSearchFacetsselectedFacetsTemplateData; // optional object for overriding selected facets template
}
export interface ISearchstaxSearchFacetsClearFacetsTemplateData {
template: string;
containerClass: string;
}
export interface ISearchstaxSearchFacetsselectedFacetsTemplateData {
template: string; //main template in Mustache templating language. data available: IFacetValue | IFacetValueRange
containerClass: string; //class where selected facets will be placed within the template
}
export interface ISearchstaxSearchFacetsFilterByTemplateData {
template: string; //main template in Mustache templating language
containerClass: string; // class where button will be placed within the template
}
export interface ISearchstaxSearchFacetsItemTemplateData {
template: string; // main template in Mustache templating language. data available: { ...IFacetValueData, isChecked }
inputCheckboxClass?: string; // class of checkboxes
checkTriggerClasses?: string[]; // class list of elements that trigger facet select/unselect action
}
export interface ISearchstaxSearchFacetsItemContainerTemplateData {
template: string; // main template in Mustache templating language. data available: IFacetData
facetListTitleContainerClass: string; // container class where facet category title will be rendered within template
facetListContainerClass: string; // container class where facet items will be listed
}
export interface ISearchstaxSearchFacetsShowMoreTemplateData {
template: string; // main template in Mustache templating language. data available: IFacetData
showMoreButtonClass: string; // class of container where show more/less button will be placed
}
export interface ISearchstaxSearchFacetsMainTemplateData {
template: string; // main template in Mustache templating language data available: IFacetsTemplateData
facetsContainerClass: string; // class of container where facets will be placed
selectedFacetsContainerClass?: string; // class of container where selected facets will be placed
}
export interface ISearchstaxSearchFacetsMainMobileTemplate {
template: string; // main template in Mustache templating language. data available: IFacetsTemplateData
facetsContainerClass: string; // class of container where facets will be placed
closeOverlayTriggerClasses?: string[]; // class list of all elements that should trigger mobile overlay close action
filterByContainerClass?: string; // class of container where "Filter By" button will be rendered
selectedFacetsContainerClass?: string; // class of container where selected facets will be listed
}
Pagination Interfaces
export interface IPaginationData extends ISearchstaxParsedData {
nextPageLink: string;
previousPageLink: string;
}
export interface ISearchstaxSearchPaginationConfig {
templates?: ISearchstaxSearchPaginationConfigTemplates; // optional object that defines template override options
}
export interface ISearchstaxSearchPaginationConfigTemplates {
mainTemplate?: ISearchstaxSearchPaginationTemplateData; // optional object for overriding main template
}
export interface ISearchstaxSearchPaginationTemplateData {
template: string; // main template in Mustache templating language. Data available: IPaginationData
previousButtonClass: string; // class of previous page link within template
nextButtonClass: string; // class of next page link within template
}
Search Feedback Interfaces
export interface ISearchstaxSearchFeedbackConfig {
templates?: ISearchstaxSearchFeedbackConfigTemplates; // optional object that defines template override options
}
export interface ISearchstaxSearchFeedbackConfigTemplates {
main?: ISearchstaxSearchFeedbackTemplateData; // optional object for overriding main template
}
export interface ISearchstaxSearchFeedbackTemplateData {
template: string; // main template in Mustache templating language,
originalQueryClass: string; // class of element that contains original query and will execute search on click. Search term is innerHTML of that element
}
Related Searches Interfaces
export interface ISearchstaxParam {
q: string;
fl: string;
_forwardedCount: string;
_: string;
}
export interface ISearchstaxRelatedSearchesResponseHeader {
zkConnected: boolean;
status: number;
qTime: number;
params: ISearchstaxParam;
}
export interface ISearchstaxRelatedSearchResult {
search_term: string;
related_search: string;
score: number;
last?: boolean;
position?: number;
}
export interface ISearchstaxRelatedSearchesResponseBody {
numFound: number;
start: number;
maxScore: number;
numFoundExact: boolean;
docs: ISearchstaxRelatedSearchResult[];
}
export interface ISearchstaxRelatedSearchesResponse {
responseHeader: ISearchstaxRelatedSearchesResponseHeader;
response: ISearchstaxRelatedSearchesResponseBody;
}
export interface ISearchstaxRelatedSearchesConfig {
relatedSearchesURL: string; // URL of related searches endpoint
relatedSearchesAPIKey: string; // related searches api key
templates?: ISearchstaxRelatedSearchesConfigTemplates; // optional object that defines template override options
}
export interface ISearchstaxRelatedSearchesConfigTemplates {
main?: ISearchstaxRelatedSearchesTemplateData; // optional object for overriding main template
relatedSearch?: ISearchstaxRelatedSearchTemplateData; // optional object for overriding related search template
}
export interface ISearchstaxRelatedSearchesTemplateData {
template: string; // main template in Mustache templating language
relatedSearchesContainerClass: string; // class where related searches will be rendered within the template
}
export interface ISearchstaxRelatedSearchTemplateData {
template: string; // main template in Mustache templating language
relatedSearchContainerClass: string; // class where related search item will be rendered within the template
}
Promotions Interfaces
export interface IExternalPromotion {
name: string;
id: number;
url: string;
description: string;
}
export interface ISearchstaxExternalPromotionsConfig {
templates?: ISearchstaxExternalPromotionsTemplates // optional object that defines template override options
}
export interface ISearchstaxExternalPromotionsTemplates{
mainTemplate?: ISearchstaxExternalPromotionsTemplateData; // optional object for overriding main template
externalPromotion?: ISearchstaxExternalPromotionTemplateData; // optional object for overriding main template
}
export interface ISearchstaxExternalPromotionsTemplateData {
template: string; // main template in Mustache templating language
externalPromotionsContainerId: string; // id where external promotions will be rendered within the template
}
export interface ISearchstaxExternalPromotionTemplateData {
template: string; // main template in Mustache templating language
}
Sorting Interfaces
export interface ISearchstaxSearchSortingData extends ISearchstaxParsedData{
}
Questions?
Do not hesitate to contact the SearchStax Support Desk.