---
title: Feature comparison
slug: graph/docs/feature-comparison
docTags: 
createdAt: 2026-07-30T20:30:18.526Z
---

Compare features between Optimizely Search & Navigation and Optimizely Graph. This article highlights configuration differences, query behavior, language handling, and feature availability so you can evaluate migration impact and plan required changes.

Optimizely Graph provides a modern, API-first search architecture for headless, composable, and multi-channel experiences. You must implement some Search & Navigation features differently in Graph, but Graph offers greater flexibility, scalability, and long-term alignment with modern CMS and frontend architectures.

## Synonym handling comparison

The following table summarizes key differences between synonym handling in Optimizely Search & Navigation and Optimizely Graph.

| Feature                | Search & Navigation               | Optimizely Graph                            |
| ---------------------- | --------------------------------- | ------------------------------------------- |
| Configuration          | Programmatic API and Admin UI     | REST API only                               |
| Format                 | C# objects, CSV                   | Plain text (comma-separated)                |
| Slots                  | One set per language              | Two slots per language (ONE, TWO)           |
| Query usage            | `.UsingSynonyms()`                | `synonyms: [ONE, TWO]` parameter            |
| Admin UI               | Supported                         | Not supported                               |
| Query operator support | All                               | Most operators (see operator compatibility) |
| All languages          | Supports **All languages** option | Must configure per language                 |

### Operator compatibility

Optimizely Graph applies synonyms only to supported query operators to preserve relevance and predictable results.

| Operator        | Supports Synonyms | Notes                              |
| --------------- | ----------------- | ---------------------------------- |
| `contains`      | Yes               | In-sentence matching supported     |
| `match`         | Yes               | Recommended for full-text search   |
| `eq`            | Yes               | Exact match with synonym expansion |
| `in`            | Yes               | Works with array values            |
| `like`          | No                | Synonyms ignored                   |
| `startsWith`    | No                | Synonyms ignored                   |
| `endsWith`      | No                | Synonyms ignored                   |
| `gt/gte/lt/lte` | No                | Synonyms ignored                   |
| `exist`         | No                | Synonyms ignored                   |

## Language behavior differences

Before [migrating synonyms](docId\:aM0WpNsNXe_n26IhkX5sG), review how language handling differs between Optimizely Search & Navigation and Optimizely Graph. These differences affect how synonyms apply at query time and may require additional configuration during migration.

### All languages support

- **Search & Navigation** – Supports **All languages** option. A single synonym set applies to every language.
- **Graph** – Does not support an **All languages** option and requires you to configure synonyms per language, enabling more precise, language-specific relevance control.

### Default language behavior

- **Search & Navigation** – Applies synonyms to **All languages** when you do not specify a language.
- **Graph** – Applies synonyms only to the standard language when you do not specify `language_routing`.

### Migration impact

If your Search & Navigation configuration uses the **All languages** option, or does not specify a language, upload the same synonym definitions to Graph for each supported language.

### Example

Your site supports English (`en`), Swedish (`sv`), and French (`fr`), and you have 50 synonyms in Search & Navigation without a language specified:

- **Search & Navigation behavior** – One synonym set applies to all 3 languages automatically.
- **Graph behavior** – You must upload separately:
  - English – `language_routing=en` (50 entries)
  - Swedish – `language_routing=sv` (50 entries)
  - French – `language_routing=fr` (50 entries)
  - Total – 150 entries (50 × 3 languages)

:::hint{type="warning"}
**Important**
If you upload to Optimizely Graph without specifying `language_routing`, your synonyms apply only to the standard language, not to all languages as in Search & Navigation.
:::

## Feature availability comparison

### Features available in both Search & Navigation and Graph

Both platforms support the following features:

- Full-text search
- Filtering
- Faceting
- Sorting
- Pagination
- Synonyms
- Stopwords
- Boosting
- Best bets and pinned results
- Geospatial search
- Content versioning

### Key architectural differences

| Aspect    | Search & Navigation | Graph                    |
| --------- | ------------------- | ------------------------ |
| API style | LINQ-like .NET      | GraphQL                  |
| Analyzers | Custom analyzers    | Pre-configured analyzers |

### Features available only in Graph

Optimizely Graph also provides the following features:

- Semantic search
- GraphQL API
- Recursive queries
- Inline fragments
- Preview tokens (JWT)
- Delta import
- Headless CMS support

### Features managed differently in Graph

Graph handles the following areas differently from Search & Navigation:

- Administrative configuration uses APIs rather than a UI.
- Analytics and tracking use application-level or external analytics tools.
- Personalization integrates with Optimizely experimentation and decisioning services.
