CategoryFieldSuggestions
CategoryFieldSuggestions
This is for:
DeveloperExample Implementation
category-suggestions.fn.tsx
import {CategoryFieldSuggestions as HeadlessCategoryFieldSuggestions} from '@coveo/headless';
import {useEffect, useState, FunctionComponent} from 'react';
interface CategoryFieldSuggestionsProps {
controller: HeadlessCategoryFieldSuggestions;
}
export const CategoryFieldSuggestions: FunctionComponent<
CategoryFieldSuggestionsProps
> = (props) => {
const {controller} = props;
const [state, setState] = useState(controller.state);
useEffect(() => controller.subscribe(() => setState(controller.state)), []);
const onInput = (text: string) => {
if (text === '') {
controller.clear();
return;
}
controller.updateText(text);
};
return (
<div>
<input onInput={(e) => onInput(e.currentTarget.value)} />
<ul>
{state.values.map((facetSearchValue) => (
<li
key={[...facetSearchValue.path, facetSearchValue.rawValue].join(
'>'
)}
onClick={() => controller.select(facetSearchValue)}
>
{[...facetSearchValue.path, facetSearchValue.displayValue].join(
' > '
)}{' '}
({facetSearchValue.count} results)
</li>
))}
</ul>
</div>
);
};
// usage
/**
* ```tsx
* const facetOptions: CategoryFacetOptions = {field: 'geographicalhierarchy'}
* const options: CategoryFieldSuggestionsOptions = {facet: facetOptions};
* const controller = buildCategoryFieldSuggestions(engine, {options});
*
* <CategoryFieldSuggestions controller={controller} />;
* ```
*/
The CategoryFieldSuggestions
controller provides query suggestions based on a particular category facet field.
For example, you could use this controller to provide auto-completion suggestions while the end user is typing an item category.
This controller is a wrapper around the basic category facet controller search functionality, and thus exposes similar options and properties.
Methods
clear
Resets the query and empties the suggestions.
search
Requests field suggestions based on a query.
select
Filters the search using the specified value.
If a facet exists with the configured facetId
, selects the corresponding facet value.
Parameters
-
value:
CategoryFieldSuggestionsValue
The field suggestion to select.
showMoreResults
Shows more field suggestions for the current query.
updateCaptions
Updates the captions of field suggestions.
Parameters
-
captions:
Record<string, string>
A dictionary that maps field values to field suggestion display names.
updateText
Requests field suggestions based on a query.
Parameters
-
text:
string
The query with which to request field suggestions.
subscribe
Adds a callback that’s invoked on state change.
Parameters
-
listener:
() => void
A callback that’s invoked on state change.
Returns Unsubscribe
: A function to remove the listener.
Attributes
state
Properties
-
isLoading:
boolean
Whether the request for field suggestions is in progress.
-
moreValuesAvailable:
boolean
Whether more field suggestions are available.
-
query:
string
The query used to request field suggestions.
-
values:
CategoryFieldSuggestionsValue[]
The field suggestions.
Initialize
buildCategoryFieldSuggestions
Creates a CategoryFieldSuggestions
controller instance.
This controller initializes a category facet under the hood, but exposes state and methods that are relevant for suggesting field values based on a query. It’s important not to initialize a category facet with the same facetId
but different options, because only the options of the controller which is built first will be taken into account.
Parameters
-
engine:
SearchEngine
The headless engine.
-
props:
CategoryFieldSuggestionsProps
The configurable
CategoryFieldSuggestions
controller properties.
Returns CategoryFieldSuggestions
CategoryFieldSuggestionsProps
The configurable CategoryFieldSuggestions
controller properties.
Properties
-
options:
CategoryFieldSuggestionsOptions
The options for the
CategoryFieldSuggestions
controller.
CategoryFieldSuggestionsOptions
The options for the CategoryFieldSuggestions
controller.
Properties
-
facet:
CategoryFacetOptions
The options used to register the category facet used under the hood by the field suggestions controller.
Related Types
CategoryFacetOptions
Properties
-
field:
string
The field whose values you want to display in the facet.
-
basePath?:
string[]
The base path shared by all values for the facet.
Default:
[]
-
delimitingCharacter?:
string
The character that specifies the hierarchical dependency.
Default:
;
-
facetId?:
string
A unique identifier for the controller. By default, a random unique ID is generated.
-
facetSearch?:
CategoryFacetSearchOptions
Facet search options.
-
filterByBasePath?:
boolean
Whether to filter the results using
basePath
.Default:
true
-
filterFacetCount?:
boolean
Whether to exclude the parents of folded results when estimating the result count for each facet value.
Default:
true
-
injectionDepth?:
number
The maximum number of results to scan in the index to ensure that the facet lists all of the potential facet values.
Note: A high
injectionDepth
may reduce facet request performance.Minimum:
0
Default:
1000
-
numberOfValues?:
number
The number of values to request for this facet. This option also determines the number of additional values to request each time this facet is expanded, as well as the number of values to display when this facet is collapsed.
Minimum:
1
Default:
5
-
sortCriteria?:
'alphanumeric' | 'occurrences'
The criterion to use for sorting returned facet values.
Default:
occurrences
CategoryFacetSearchOptions
Properties
-
captions?:
Record<string, string>
A dictionary that maps index field values to facet value display names.
-
numberOfValues?:
number
The maximum number of values to fetch.
Default:
10
-
query?:
string
The string to match.
CategoryFieldSuggestionsValue
Properties
-
count:
number
An estimated number of result items matching both the current query and the filter expression that would get generated if this field suggestion was selected.
-
displayValue:
string
The custom field suggestion display name, as specified in the
captions
argument of theFieldSuggestion
controller. -
path:
string[]
The hierarchical path to the value.
-
rawValue:
string
The original field value, as retrieved from the field in the index.
Unsubscribe
Call signatures
-
(): void;