DidYouMean (Search Engine) (Deprecated)
DidYouMean (Search Engine) (Deprecated)
|
|
Headless v1 has been deprecated. We recommend using the latest version of the Coveo Headless library. |
Example implementation
did-you-mean.fn.tsx
import {DidYouMean as HeadlessDidYouMean} from '@coveo/headless';
import {useEffect, useState, FunctionComponent} from 'react';
interface DidYouMeanProps {
controller: HeadlessDidYouMean;
}
export const DidYouMean: FunctionComponent<DidYouMeanProps> = (props) => {
const {controller} = props;
const [state, setState] = useState(controller.state);
useEffect(() => controller.subscribe(() => setState(controller.state)), []);
if (!state.hasQueryCorrection) {
return null;
}
if (state.wasAutomaticallyCorrected) {
return (
<div>
<p>
No results for{' '}
<b>{state.queryCorrection.wordCorrections[0].originalWord}</b>
</p>
<p>
Query was automatically corrected to <b>{state.wasCorrectedTo}</b>
</p>
</div>
);
}
return (
<button onClick={() => controller.applyCorrection()}>
Did you mean: {state.queryCorrection.correctedQuery} ?
</button>
);
};
// usage
/**
* ```tsx
* const controller = buildDidYouMean(engine);
*
* <DidYouMean controller={controller} />;
* ```
*/
Methods
applyCorrection
Apply query correction using the query correction, if any, currently present in the state.
subscribe
Adds a callback that’s invoked on state change.
Parameters
-
listener:
() => voidA callback that’s invoked on state change.
Returns Unsubscribe: A function to remove the listener.
Attributes
state
The state of the DidYouMean controller.
Properties
-
hasQueryCorrection:
booleanSpecifies if there’s a query correction to apply.
-
originalQuery:
stringThe original query that was performed, without any automatic correction applied.
-
queryCorrection:
QueryCorrectionThe query correction that is currently applied by the "did you mean" module.
-
wasAutomaticallyCorrected:
booleanSpecifies if the query was automatically corrected by Headless.
This happens when there is no result returned by the API for a particular misspelling.
-
wasCorrectedTo:
stringThe correction that was applied to the query. If no correction was applied, will default to an empty string.
Initialize
buildDidYouMean
The DidYouMean controller is responsible for handling query corrections. When a query returns no result but finds a possible query correction, the controller either suggests the correction or automatically triggers a new query with the suggested term.
Parameters
-
engine:
SearchEngineThe headless engine.
Returns DidYouMean
Related types
QueryCorrection
Properties
-
correctedQuery:
stringThe query once corrected
-
wordCorrections:
WordCorrection[]Array of correction for each word in the query
Unsubscribe
Call signatures
-
(): void
WordCorrection
Properties
-
correctedWord:
stringThe new corrected word
-
length:
numberLength of the correction
-
offset:
numberOffset, from the beginning of the query
-
originalWord:
stringThe original word that was corrected