Migrate autocomplete
Migrate autocomplete functionality from Optimizely Search & Navigation to Optimizely Graph.
Autocomplete (type-ahead) suggests possible completions as users type, helping them find content faster and reducing empty search results.
ImportantSearch & Navigation and Graph autocomplete work differently, so you cannot migrate them directly.
- Search & Navigation autocomplete – Suggests search phrases from two sources: phrases you add manually in the Admin UI, and phrases from previous searches that returned results.
- Graph autocomplete – Suggests values from your content fields (such as page titles, product names, or tags). It reads from the content stored in your CMS.
Because they use different data sources, you cannot transfer your Search & Navigation autocomplete phrases or settings to Graph. Configure Graph autocomplete as a new feature. Verify that the Graph approach meets your needs before starting.
Key differences
| Feature | Search & Navigation | Optimizely Graph |
|---|---|---|
| Data source | Editorial (manually added) and statistical (past searches) | Indexed content field values |
| Configuration | Admin UI (Manage > Optimize > Autocomplete) | No configuration needed |
| API | REST endpoint (/_autocomplete) | GraphQL autocomplete field |
| Field targeting | No field selection (suggests search phrases) | Select specific StringFilterInput fields |
| Matching | Beginning of phrase only (prefix matching) | Prefix matching on each word (preserves word order) |
| Character limit | No limit | Maximum 10 characters per word |
| Filtering | tags and size parameter (default: 3, max: 10) | GraphQL where clause and limit per field (default: 10, max: 1,000) |
Configure Graph autocomplete
Graph autocomplete requires no additional configuration. It works on indexed content as soon as the sync completes. For full implementation details, parameters, and examples, see the Graph autocomplete documentation.
The following query demonstrates a basic autocomplete request:
{
StandardPage(limit: 0) {
autocomplete {
MetaKeywords(value: "Alloy", limit: 3)
}
}
}The following query demonstrates a response to the previous basic autocomplete request:
{
"data": {
"StandardPage": {
"autocomplete": {
"MetaKeywords": [
"Alloy Track",
"Alloy Events",
"Alloy News"
]
}
}
}
}Use autocomplete with searchable fields
Graph autocomplete works only on fields typed as StringFilterInput. Most CMS string properties (such as Name) are indexed as SearchableStringFilterInput by default, which does not support autocomplete.
To use autocomplete on a searchable field, create a new field that returns the same value using the Conventions API IncludeField method. Fields added through the IncludeField method are indexed as StringFilterInput, which supports autocomplete.
For example, add a method to your content type that returns the value you want to use for autocomplete:
public string AutocompleteName() => PageName;Then register it using the Conventions API in an initializable module:
conventionRepo.ForInstancesOf<ProductPage>()
.IncludeField(x => x.AutocompleteName());After syncing content, the AutocompleteName field displays as StringFilterInput in GraphQL and supports autocomplete:
{
ProductPage(limit: 0) {
autocomplete {
AutocompleteName(value: "Alloy", limit: 3)
}
}
}Updated 11 days ago
