Learn how to use Algolia Recommend to display recommendations on your website.
Algolia Recommend lets you display recommendations on your website.
Recommendations help users broaden their search and explore more items.
Users can jump to similar or complementary items when they don’t find a precise match.
Recommendations rely on supervised machine learning models.
Algolia trains these models on your product data and user interactions.Recommend uses two different algorithm types: collaborative filtering and content-based filtering.
Collaborative filtering analyzes user events from the last 30 to 90 days.
Recommend builds an interaction table between userToken and objectID.
It then counts how often each user interacts with each record.
It then uses this data in a collaborative filtering algorithm.
The algorithm finds other records that are similar or frequently bought together:
Similar when the same users interact with them.
Frequently bought together when the same users bought them.
Content-based filtering analyzes key attributes of items, such as titles or descriptions, to find similar items.
The relaxed variant is the default.
It recommends items that are likely bought together.
It uses collaborative filtering to infer relationships from past purchases.
For example, users often buy product A with product B, and product B with product C.
Recommend can then suggest product C for product A.
This can happen even if those two items weren’t bought together.
This increases catalog discovery but can introduce inferred pairings.
The strict variant recommends only items that appeared together in the conversion events you select for training.
If you don’t select any events, Recommend uses all conversion events by default (for example, add-to-cart and purchase).
Content-based filtering for Related items (Related content)
Content-based filtering can improve relevance compared to using only collaborative filtering.
It lets you show recommendations when you don’t have enough click and conversion events.
With content-based filtering, you can increase catalog coverage.
Users then get recommendations for items with little interaction data.
You can use both content-based and collaborative filtering together.
In that case, Recommend returns a merged set of recommendations from both models.
The Trending items model looks for items in your product catalog that have become popular.
It bases this on conversion events.
This could be global for the entire catalog or within a specific facet (category), like winter sweaters.
The Trending facets value model looks for facet values that became more popular.
For example, you can recommend trending facet values within the categories facet.You can use both models together.
For example, show trending categories on your home page in a carousel layout.
Then show the trending items for each category in the carousel cards.
The Looking similar model recommends related items.
It bases these recommendations on the images in your index.
It doesn’t require any events.
For more information, see Set up Looking similar.
To create relevant recommendations,
each model needs a minimum number of events or items with attributes.
The Frequently bought together and Related items models collect data from the last 30 days.
If this data isn’t enough, they extend the collection period to 90 days.
Similarly, the Trending items and Trending facets value models first gather data from the last 15 days.
If needed, they expand this period to the last 30 days.Each model also has a maximum number of events it can use for training.
If there are too many events or items with attributes, the model ignores them.Each model generates up to 30 recommendations.
Model
Input type
Minimum number
Maximum number
Frequently bought together
Conversion events with two or more items
1,000
3,000,000
Related items
Click and conversion events
10,000
3,000,000
Related content
Items with values in their content-based attributes
By default, each model trains on all the events it receives.
To make your recommendations more relevant, select which events to include.Event selection applies to the Frequently bought together, Related items, Trending items, and Trending facets value models.
Each model only lists the event types it trains on.For example, users often add several similar items to their cart and buy only one of them.
Training the Frequently bought together model only on purchase events keeps the model focused on items that users actually bought together.Select events in the Events customization section when you create a model, or in the model’s Settings tab.
Event selection isn’t compatible with events uploaded from a CSV file.
To train on all available events again, restore the default settings.
After setting up a model for the first time, it starts training.
After this initial training, models retrain once every day.
You can’t change how often a model retrains.
This ensures your recommendations stay up-to-date as your catalog changes over time.The training process can start at any moment during the day.
The duration depends on your catalog size and the resources available.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Algolia","description":"Build search, discovery, and AI experiences with Algolia. Guides, API references, libraries, UI components, and integrations for your stack.","colors":{"primary":"#3970ff","light":"#3970ff","dark":"#003DFF"},"logo":{"light":"https://mintcdn.com/algolia/kiecJp3hu-WXhj-3/logo/light.svg?fit=max\u0026auto=format\u0026n=kiecJp3hu-WXhj-3\u0026q=85\u0026s=bf613e260ca94c0eb23384e6c0d5c77f","dark":"https://mintcdn.com/algolia/kiecJp3hu-WXhj-3/logo/dark.svg?fit=max\u0026auto=format\u0026n=kiecJp3hu-WXhj-3\u0026q=85\u0026s=31a97f60063c111253c518bc0c638e70","href":"/doc"},"favicon":"https://mintcdn.com/algolia/ApgdWRCFtd9v2oPX/favicon.png?fit=max\u0026auto=format\u0026n=ApgdWRCFtd9v2oPX\u0026q=85\u0026s=91df7c93abadfb122ffc8e0f78cc2dc8","api":{"playground":{"display":"simple"},"examples":{"languages":["curl","csharp","dart","go","java","javascript","kotlin","php","python","ruby","scala","swift"],"autogenerate":false}},"navbar":{"links":[{"href":"https://dashboard.algolia.com/users/sign_in","label":"Log in"}],"primary":{"type":"button","label":"Create account","href":"https://www.algolia.com/users/sign_up"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/algolia","x":"https://twitter.com/algolia","discord":"https://alg.li/discord","youtube":"https://www.youtube.com/channel/UCTNkiq-SO8hay1PRx-it9Cw","website":"https://www.algolia.com"},"links":[{"items":[{"label":"Support","href":"https://support.algolia.com/hc/en-us"},{"label":"Glossary","href":"/doc/glossary"},{"label":"Privacy policy","href":"https://www.algolia.com/policies/privacy"},{"label":"Cookie settings","href":"https://www.algolia.com"}]}]},"seo":{"metatags":{"canonical":"https://www.algolia.com"},"organization":{"id":"https://www.algolia.com/#organization","name":"Algolia","url":"https://www.algolia.com","sameAs":["https://www.linkedin.com/company/algolia/","https://github.com/algolia","https://x.com/algolia","https://www.youtube.com/channel/UCTNkiq-SO8hay1PRx-it9Cw"]}},"fonts":{"heading":{"family":"Sora"}},"icons":{"library":"lucide"},"styling":{"eyebrows":"section","codeblocks":"system","latex":true},"integrations":{"segment":{"key":"cKQbv9nMHIUgdWswDLG0c3UdiUgBaUmA"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"algolia","hasAudioNarration":false,"actualSubdomain":"algolia","customDomains":["www.algolia.com"],"gitSource":{"type":"github","owner":"algolia","repo":"docs-new","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aedffff2f3197cf5b96845b","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Libraries and tools","count":629},{"language":"default","tag":"Guides","count":585},{"language":"default","tag":"API clients","count":418},{"language":"default","tag":"Search and Discovery platform","count":408},{"language":"default","tag":"API reference","count":400},{"language":"default","tag":"Reference","count":293},{"language":"default","tag":"UI libraries","count":290},{"language":"default","tag":"Build Search UI","count":235},{"language":"default","tag":"Search","count":187},{"language":"default","tag":"React InstantSearch","count":169}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--radius: 0.5rem;--rounded-2xl: var(--radius);--rounded-xl: var(--radius);--rounded-lg: var(--radius);--rounded-md: var(--radius);--rounded-full: var(--radius);--icon-stroke: #000000;--border-color: rgb(var(--gray-200) / 0.5);--font-weight-headings-custom: 700;--docsearch-background-color: #f5f6f7;--filters-token-string-color: #b46900;--filters-token-error-color: #d7263d;--filters-token-paren-color: #005cc5;--filters-token-num-color: #6f42c1;--filters-token-operator-color: #22863a;--docsearch-sidepanel-border: var(--border-color);--docsearch-sidepanel-background: rgb(244, 246, 250);--docsearch-sidepanel-background-dark: #fff;--docsearch-hit-background-muted: rgb(247, 247, 248);--docsearch-searchbox-focus-background: #fff}:root.dark,html[data-theme=dark]{--icon-stroke: #ffffff;--border-color: rgb(var(--gray-900) / 0.8);--docsearch-background-color: #0a0b11 !important;--docsearch-dropdown-menu-background: #10121e;--docsearch-dropdown-menu-item-hover-background: #0a0b11;--docsearch-hit-color: #e5e7eb;--filters-token-string-color: #ffa657;--filters-token-error-color: #ff6b6b;--filters-token-paren-color: #79c0ff;--filters-token-num-color: #d2a8ff;--filters-token-operator-color: #7ee787;--docsearch-sidepanel-background: rgb(15, 17, 23);--docsearch-sidepanel-background-dark: rgba(11, 13, 17, 1);--docsearch-hit-background-muted: rgb(14, 17, 23);--docsearch-modal-background: #0a0b11;--docsearch-hit-focus-background: rgb(var(--gray-900))}.rounded-\\[0\\.85rem\\]{border-radius:var(--radius)}#banner{background-color:#23263b}#banner a{color:inherit}#background-div{background-color:#f6f6fa}.dark #background-div{background-color:#ffffff;opacity:0.03}#pagination{display:none}.background-lines{fill:#c5c9e0}.dark .background-lines{fill:#ffffff;fill-opacity:0.15}th{text-align:left}.tooltip{user-select:text}.prose a{font-weight:inherit}.prose a strong{font-weight:600}.katex-display>.katex{overflow-y:hidden}.prose a.link[href^=\"http\"]:not([href^=\"https://www.algolia.com/doc\"]){white-space:nowrap}.prose a.link[href^=\"http\"]:not([href^=\"https://www.algolia.com/doc\"])::after{display:inline-block;width:14px;height:14px;margin-left:4px;vertical-align:-2px;content:\"\";background-color:currentColor;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E\u003cpath d='M15 3h6v6'/%3E\u003cpath d='M10 14 21 3'/%3E\u003cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E\") center / contain no-repeat;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E\u003cpath d='M15 3h6v6'/%3E\u003cpath d='M10 14 21 3'/%3E\u003cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E\") center / contain no-repeat}.prose h2 code,.prose h3 code,.prose h4 code{font-weight:700}.prose table a code{word-break:keep-all}[data-component-part=\"field-content\"]{margin-left:1.5rem}[data-component-part=\"code-block-root\"]{border-radius:var(--radius)}#content-area img{margin-inline:auto;background:transparent!important}#content-area img:not(.no-shadow){box-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1)}#content-area video{margin-inline:auto}.video-embed{display:block;width:100%;min-width:0;max-width:var(--video-embed-max-width, 644px);aspect-ratio:16 / 9;height:auto;margin-inline:auto}button+div[aria-hidden=\"true\"]{background-color:#23263b;border-radius:var(--radius);box-shadow:0 0 0 1px #23263b0d, 0 4px 8px -2px #23263b40;color:#fff;padding:.5rem .75rem}#feedback-toolbar button{border-radius:var(--radius)}html.no-overflow{overflow:hidden}body.DocSearch--active{overflow:initial!important}.DocSearch-Container{visibility:hidden;opacity:0;transition:opacity 120ms ease;padding-top:5vh;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.1);display:flex;align-items:flex-start;justify-content:center;z-index:200;cursor:initial}.DocSearch-Container.docsearch-ready{visibility:visible;opacity:1}.dark .DocSearch-Form,.dark .DocSearch-SearchBar{background-color:transparent!important}.DocSearch-Dropdown{border-top:1px solid var(--docsearch-subtle-color);scrollbar-color:#9698c3 #f5f6f7;scrollbar-width:thin}.dark .DocSearch-Container{--docsearch-text-color: #c4c7dc}.dark .DocSearch-Dropdown{scrollbar-color:#7f8497 #15172a}.dark .DocSearch-Close{color:#5172FF}.dark .DocSearch-Close svg{color:#5172FF}.dark .DocSearch-MagnifierLabel svg{color:#5172FF}.DocSearch-SidepanelButton.floating{display:none}.dark .DocSearch-Dropdown{border-color:#212139}.dark .DocSearch-Divider{border-color:#212139}.dark .DocSearch-Input{color:white;caret-color:white}.dark .DocSearch-Container{background-color:rgba(0, 0, 0, 0.6)!important}.dark .DocSearch-SearchBar,.dark .DocSearch-Form,.dark .DocSearch-Input{color:#ffffff!important}.dark .DocSearch-Input::placeholder{color:#ffffff!important;opacity:0.9}.dark .DocSearch-Reset,.dark .DocSearch-Reset span,.dark .DocSearch-Reset svg,.dark .DocSearch-Close,.dark .DocSearch-Close svg{color:#5172ff!important;fill:#5172ff!important;stroke:#5172ff!important}.dark .DocSearch-Cancel,.dark .DocSearch-Cancel svg{color:#ffffff!important;fill:#ffffff!important;stroke:#ffffff!important}.dark .DocSearch-MagnifierLabel,.dark .DocSearch-MagnifierLabel svg{color:#5172ff!important;fill:#5172ff!important;stroke:#5172ff!important}.dark .DocSearch-Dropdown{background-color:#0a0b11!important}.dark .DocSearch-Hits mark{background-color:transparent!important;color:#7aa2ff!important}.dark .DocSearch-Hit a{color:#e5e7eb!important;border-color:#1b1e29!important}.dark .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.dark .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon{color:#7aa2ff}.dark .DocSearch-Title,.dark .DocSearch-Label{background-color:#0f1117!important}.dark .DocSearch-Title,.dark .DocSearch-Label,.dark .DocSearch-Hit-source{color:#e5e7eb!important}.dark .DocSearch-Footer{background-color:#0f1117!important;border-top:1px solid #1b1e29!important;color:#cbd5e1!important}.DocSearch-Hit--AskAI .DocSearch-AskAiScreen-Response .DocSearch-AskAiScreen-RelatedSources-Item-Link{background:var(--docsearch-hit-background-muted)!important}.DocSearch-Hit-AskAIButton-title-query{color:var(--docsearch-highlight-color)}.dark .DocSearch-Hit-AskAIButton-title-query{color:#7aa2ff!important}.dark .DocSearch-AskAiScreen-Response{color:#f5f6f7!important}.dark .DocSearch-Markdown-Content,.dark .DocSearch-Markdown-Content li{color:#cbd5e1!important}.dark .DocSearch-Markdown-Content a{color:#7aa2ff!important}.dark .DocSearch-AskAiScreen-RelatedSources-Item-Link{color:#cbd5e1}.dark .DocSearch-AskAiScreen-Response .DocSearch-CodeSnippet .DocSearch-CodeSnippet-CopyButton{background-color:#0f1117!important;color:#cbd5e1!important}.dark .DocSearch-AskAiScreen-Response .DocSearch-CodeSnippet pre{background-color:#0f1117!important;color:#e5e7eb!important}.dark .DocSearch-AskAiScreen-Response .DocSearch-CodeSnippet pre code{background-color:transparent!important;color:inherit!important}.DocSearch-Modal{position:relative;overflow:hidden;width:700px;max-width:90vw;border-radius:var(--radius);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15)}.docsearch-expanded .DocSearch-Modal{max-height:auto;border-radius:var(--radius);box-shadow:0 25px 50px -12px rgba(0, 0, 0, 0.25)}@media (max-width: 768px){.DocSearch-Container{padding-top:0}.DocSearch-Modal{width:100vw;max-width:100vw;border-radius:var(--radius)}.docsearch-expanded .DocSearch-Modal{max-height:100vh;border-radius:var(--radius)}.DocSearch-Dropdown{height:calc(100vh - var(--docsearch-footer-height) - var(--docsearch-searchbox-height, var(--docsearch-searchbox-initial-height)))}.docsearch-sidepanel-toggle .docsearch-sidepanel-label,.docsearch-sidepanel-toggle .docsearch-sidepanel-shortcut{display:none}.docsearch-sidepanel-toggle{padding:0 0.5rem}}@media (min-width: 769px){.docsearch-sidepanel-toggle{border:1px solid transparent;box-shadow:0 0 0 1px rgba(156, 163, 175, 0.3)}.docsearch-sidepanel-toggle:hover{box-shadow:0 0 0 1px rgba(75, 85, 99, 0.3)}html.dark .docsearch-sidepanel-toggle{box-shadow:0 0 0 1px rgba(75, 85, 99, 0.3)}html.dark .docsearch-sidepanel-toggle:hover{box-shadow:0 0 0 1px rgba(107, 114, 128, 0.3)}}.DocSearch-Sidepanel-Header{height:3.0rem}.DocSearch-Sidepanel-Container.inline.side-right{border-bottom-left-radius:0;border-left:1px solid var(--docsearch-sidepanel-border);border-top-left-radius:0}.DocSearch-Sidepanel-Container{box-shadow:none}.DocSearch-MCP-Callout{font-size:0.875em;display:flex;align-items:center;gap:0.25rem;color:var(--docsearch-text-color);padding-inline:0.25rem 0.5rem;padding-block:0.25rem;border-radius:var(--docsearch-border-radius);background-color:var(--docsearch-hit-focus-background);min-block-size:1.5rem}.DocSearch-MCP-Callout:hover,.DocSearch-MCP-Callout:focus-visible{outline:2px solid var(--docsearch-highlight-color)}.DocSearch-MCP-Callout svg{height:1rem;width:1rem;color:var(--docsearch-highlight-color);margin-block-start:1px}html.dark #filter-validator{background-color:var(--shiki-dark-bg)}#filter-validator{.Token_EOF {\n color: transparent;\n }\n\n .Token_Empty_Str,\n .Token_Incomplete_Str,\n .Token_String,\n .Token_Term {\n color: var(--filters-token-string-color);\n }\n\n .Token_Error {\n color: var(--filters-token-error-color);\n }\n\n .Token_Open_Paren,\n .Token_Close_Paren,\n .Token_Open_Angled_Bracket,\n .Token_Close_Angled_Bracket,\n .Token_Comma,\n .Token_Facet_Separator {\n color: var(--filters-token-paren-color);\n }\n\n .Token_Num {\n color: var(--filters-token-num-color);\n }\n\n .Token_OR,\n .Token_AND,\n .Token_NOT,\n .Token_Operator,\n .Token_Range {\n color: var(--filters-token-operator-color);\n }}.nav-tag-pill-text{text-transform:uppercase;letter-spacing:1px}[data-group-tag]>button>div{display:flex;align-items:center;gap:0.5rem}.steps .step .prose ol{list-style-type:lower-alpha}.no-bullets ul{margin-top:1rem;padding-left:0;margin-left:0;list-style:none}@layer components{.prose .no-bullets li{margin:0.5rem 0;margin-left:0!important;padding-left:0!important;list-style:none}}.no-bullets a.link{border-bottom-color:transparent}.no-bullets a.link:hover,.no-bullets a.link:focus-visible{border-bottom-color:rgb(57, 112, 255)}.no-bullets li::before{content:none!important}.homepage-hero{background-color:#23263b;background-image:linear-gradient(\n 90deg,\n rgba(12, 30, 69, 0.82) 0%,\n rgba(12, 30, 69, 0.72) 34%,\n rgba(12, 30, 69, 0.58) 58%,\n rgba(12, 30, 69, 0.44) 100%\n ),\n url(\"/mintlify-assets/hero.png\");background-position:center, 72% center;background-repeat:no-repeat;background-size:cover}@supports (background-image: image-set(url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x)){.homepage-hero{background-image:linear-gradient(\n 90deg,\n rgba(12, 30, 69, 0.82) 0%,\n rgba(12, 30, 69, 0.72) 34%,\n rgba(12, 30, 69, 0.58) 58%,\n rgba(12, 30, 69, 0.44) 100%\n ),\n image-set(\n url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x,\n url(\"/mintlify-assets/hero.png\") type(\"image/png\") 1x\n )}}@supports (background-image: -webkit-image-set(url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x)){.homepage-hero{background-image:linear-gradient(\n 90deg,\n rgba(12, 30, 69, 0.82) 0%,\n rgba(12, 30, 69, 0.72) 34%,\n rgba(12, 30, 69, 0.58) 58%,\n rgba(12, 30, 69, 0.44) 100%\n ),\n -webkit-image-set(\n url(\"/mintlify-assets/hero.webp\") type(\"image/webp\") 1x,\n url(\"/mintlify-assets/hero.png\") type(\"image/png\") 1x\n )}}.homepage-hero-cta{display:inline-flex;align-items:center;justify-content:center;gap:0;padding:0.5rem 0.875rem;border-radius:var(--radius);background:linear-gradient(220deg, rgb(69, 122, 255) 0%, rgb(30, 89, 255) 60.16%);color:#fff!important;font-family:Sora, sans-serif;font-size:0.875rem;font-weight:700;line-height:1.5rem;letter-spacing:0.28px;text-decoration:none;transition:all 150ms ease}.homepage-hero-cta:hover{background:linear-gradient(138deg, rgba(118, 160, 255, 0.7) 0%, rgba(0, 61, 255, 0.7) 25.08%, rgba(151, 71, 255, 0.7) 56.38%, rgba(118, 160, 255, 0.7) 100%), rgb(0, 61, 255);color:#fff!important}@media (min-width: 1024px){.homepage-hero-cta{padding:0.75rem 1.25rem;font-size:1rem;letter-spacing:0.32px}}.sig-param-link{color:inherit;text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);cursor:pointer;border-radius:2px;transition:text-decoration-color 120ms ease, text-decoration-thickness 120ms ease}.sig-param-link:hover,.sig-param-link:focus-visible,.line:has(.sig-param-link:hover) .sig-param-link,.line:has(.sig-param-link:focus-visible) .sig-param-link{text-decoration-style:solid;text-decoration-thickness:2px;text-decoration-color:currentColor;outline:none}.mint-flavor-switcher-slot{min-height:2.75rem;margin:0.25rem 0 1.5rem}.mint-flavor-switcher-slot .mint-flavor-switcher{margin:0}"}],"page":{"pagePath":"doc/guides/algolia-recommend/overview","slug":"/doc/guides/algolia-recommend/overview","pageMetadata":{"title":"Algolia Recommend","sidebarTitle":"Overview","description":"Learn how to use Algolia Recommend to display recommendations on your website.","public":true,"subtype":"Guide","href":"/doc/guides/algolia-recommend/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to use Algolia Recommend to display recommendations on your website.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const Index=()=>{const{Tooltip}=_provideComponents()||{};if(!Tooltip)_missingMdxReference(`Tooltip`,true);return _jsx(Tooltip,{tip:`An Algolia index is a searchable dataset that consists of records and configuration settings. These settings define how the records are searched and ranked.`,children:`index`})};function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,_MdxComponentBoundary}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Algolia Recommend lets you display recommendations on your website.\nRecommendations help users broaden their search and explore more items.\nUsers can jump to similar or complementary items when they don’t find a precise match.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-recommend-works`,children:`How Recommend works`}),`\n`,_jsx(_components.p,{children:`Recommendations rely on supervised machine learning models.\nAlgolia trains these models on your product data and user interactions.`}),`\n`,_jsxs(_components.p,{children:[`Recommend uses two different algorithm types: `,_jsx(_components.strong,{children:`collaborative filtering`}),` and `,_jsx(_components.strong,{children:`content-based filtering`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Collaborative filtering`}),` analyzes user events from the last 30 to 90 days.\nRecommend builds an interaction table between `,_jsx(_components.code,{children:`userToken`}),` and `,_jsx(_components.code,{children:`objectID`}),`.\nIt then counts how often each user interacts with each record.\nIt then uses this data in a `,_jsx(_components.a,{href:`https://wikipedia.org/wiki/Collaborative_filtering`,children:`collaborative filtering`}),` algorithm.\nThe algorithm finds other records that are similar or frequently bought together:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Similar`}),` when the same users interact with them.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Frequently bought together`}),` when the same users bought them.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#content-based-filtering-for-related-items-related-content`,children:_jsx(_components.strong,{children:`Content-based filtering`})}),` analyzes key attributes of items, such as titles or descriptions, to find similar items.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`recommend-models`,children:`Recommend models`}),`\n`,_jsxs(_components.p,{children:[`Algolia Recommend builds models from your `,_jsx(_MdxComponentBoundary,{name:`Index`,children:_jsx(Index,{})}),` and user events.\nGiven a source item’s `,_jsx(_components.code,{children:`objectID`}),`, the trained model recommends related records.`]}),`\n`,_jsx(Heading,{level:`3`,id:`frequently-bought-together`,children:`Frequently bought together`}),`\n`,_jsx(_components.p,{children:`The Frequently bought together model comes in two variants:\nrelaxed and strict.`}),`\n`,_jsx(Heading,{level:`4`,id:`relaxed-variant`,children:`Relaxed variant`}),`\n`,_jsxs(_components.p,{children:[`The relaxed variant is the default.\nIt recommends items that are `,_jsx(_components.strong,{children:`likely bought together`}),`.\nIt uses collaborative filtering to infer relationships from past purchases.\nFor example, users often buy product A with product B, and product B with product C.\nRecommend can then suggest product C for product A.\nThis can happen even if those two items weren’t bought together.\nThis increases catalog discovery but can introduce inferred pairings.`]}),`\n`,_jsx(Heading,{level:`4`,id:`strict-variant`,children:`Strict variant`}),`\n`,_jsxs(_components.p,{children:[`The strict variant recommends only items that appeared together in the `,_jsx(_components.a,{href:`#events-selection`,children:`conversion events you select for training`}),`.\nIf you don’t select any events, Recommend uses all conversion events by default (for example, add-to-cart and purchase).`]}),`\n`,_jsx(Heading,{level:`3`,id:`related-items`,children:`Related items`}),`\n`,_jsx(_components.p,{children:`The Related items model recommends related items, based on:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`User interactions (`,_jsx(_components.a,{href:`/doc/guides/sending-events`,children:`click and conversion events`}),`) (collaborative filtering)`]}),`\n`,_jsx(_components.li,{children:`Attributes (content-based filtering). Use content-based filtering to recommend related content instead of related products.`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`content-based-filtering-for-related-items-related-content`,children:`Content-based filtering for Related items (Related content)`}),`\n`,_jsxs(_components.p,{children:[`Content-based filtering can improve relevance compared to using only collaborative filtering.\nIt lets you `,_jsx(_components.strong,{children:`show recommendations when you don’t have enough click and conversion events.`}),`\nWith content-based filtering, you can increase catalog coverage.\nUsers then get recommendations for items with little interaction data.\nYou can use both content-based and collaborative filtering together.\nIn that case, Recommend returns a merged set of recommendations from both models.`]}),`\n`,_jsx(Heading,{level:`3`,id:`trending-items-and-trending-facets-value`,children:`Trending items and Trending facets value`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Trending items`}),` model looks for items in your product catalog that have become popular.\nIt bases this on `,_jsx(_components.strong,{children:`conversion events`}),`.\nThis could be global for the entire catalog or within a specific facet (category), like winter sweaters.\nThe `,_jsx(_components.strong,{children:`Trending facets value`}),` model looks for facet values that became more popular.\nFor example, you can recommend trending facet values within the `,_jsx(_components.code,{children:`categories`}),` facet.`]}),`\n`,_jsxs(_components.p,{children:[`You can use `,_jsx(_components.strong,{children:`both models together`}),`.\nFor example, show trending categories on your home page in a carousel layout.\nThen show the trending items for each category in the carousel cards.`]}),`\n`,_jsx(Heading,{level:`3`,id:`looking-similar`,children:`Looking similar`}),`\n`,_jsxs(_components.p,{children:[`The Looking similar model recommends related items.\nIt bases these recommendations on the images in your index.\nIt `,_jsx(_components.strong,{children:`doesn’t require any events`}),`.\nFor more information, see `,_jsx(_components.a,{href:`/doc/guides/algolia-recommend/how-to/lookingSimilar`,children:`Set up Looking similar`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`events-requirements-for-the-models`,children:`Events requirements for the models`}),`\n`,_jsx(_components.p,{children:`To create relevant recommendations,\neach model needs a minimum number of events or items with attributes.\nThe Frequently bought together and Related items models collect data from the last 30 days.\nIf this data isn’t enough, they extend the collection period to 90 days.\nSimilarly, the Trending items and Trending facets value models first gather data from the last 15 days.\nIf needed, they expand this period to the last 30 days.`}),`\n`,_jsx(_components.p,{children:`Each model also has a maximum number of events it can use for training.\nIf there are too many events or items with attributes, the model ignores them.`}),`\n`,_jsx(_components.p,{children:`Each model generates up to 30 recommendations.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Model`}),_jsx(_components.th,{children:`Input type`}),_jsx(_components.th,{children:`Minimum number`}),_jsx(_components.th,{children:`Maximum number`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Frequently bought together`})}),_jsx(_components.td,{children:`Conversion events with two or more items`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1,000`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3,000,000`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Related items`})}),_jsx(_components.td,{children:`Click and conversion events`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`10,000`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3,000,000`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Related content`})}),_jsx(_components.td,{children:`Items with values in their content-based attributes`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`10`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1,500,000`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Trending items`})}),_jsx(_components.td,{children:`Conversion events`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`250`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3,000,000`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Trending facets value`})}),_jsx(_components.td,{children:`Conversion events`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`250`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`3,000,000`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`events-selection`,children:`Events selection`}),`\n`,_jsx(_components.p,{children:`By default, each model trains on all the events it receives.\nTo make your recommendations more relevant, select which events to include.`}),`\n`,_jsxs(_components.p,{children:[`Event selection applies to the `,_jsx(_components.strong,{children:`Frequently bought together`}),`, `,_jsx(_components.strong,{children:`Related items`}),`, `,_jsx(_components.strong,{children:`Trending items`}),`, and `,_jsx(_components.strong,{children:`Trending facets value`}),` models.\nEach model only lists the event types it trains on.`]}),`\n`,_jsx(_components.p,{children:`For example, users often add several similar items to their cart and buy only one of them.\nTraining the Frequently bought together model only on purchase events keeps the model focused on items that users actually bought together.`}),`\n`,_jsxs(_components.p,{children:[`Select events in the `,_jsx(_components.strong,{children:`Events customization`}),` section when you create a model, or in the model’s `,_jsx(_components.strong,{children:`Settings`}),` tab.\nEvent selection isn’t compatible with events uploaded from a CSV file.\nTo train on all available events again, restore the default settings.`]}),`\n`,_jsx(Heading,{level:`2`,id:`training-frequency`,children:`Training frequency`}),`\n`,_jsxs(_components.p,{children:[`After setting up a model for the first time, it starts training.\nAfter this initial training, models retrain `,_jsx(_components.strong,{children:`once every day`}),`.\nYou can’t change how often a model retrains.\nThis ensures your recommendations stay up-to-date as your catalog changes over time.`]}),`\n`,_jsx(_components.p,{children:`The training process can start at any moment during the day.\nThe duration depends on your catalog size and the resources available.`}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/doc/guides/algolia-recommend/how-to/set-up`,children:`Set up Algolia Recommend`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/doc/guides/algolia-recommend/how-to/rules`,children:`Refine recommendations with rules`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://www.algolia.com/blog/product/from-search-to-recommendations-framing-your-customers-online-retail-journey/`,children:`From search to recommendations (blog)`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://www.algolia.com/blog/product/6-ways-to-leverage-recommendations-for-ecommerce-retailers/`,children:`Six ways to use recommendations in ecommerce (blog)`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://www.algolia.com/blog/product/what-are-media-content-recommendations-and-why-are-they-important/`,children:`Why media content recommendations are important (blog)`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{Index,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Algolia Recommend","sidebarTitle":"Overview","description":"Learn how to use Algolia Recommend to display recommendations on your website.","public":true,"subtype":"Guide","href":"/doc/guides/algolia-recommend/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How Recommend works","slug":"how-recommend-works","depth":2,"children":[]},{"title":"Recommend models","slug":"recommend-models","depth":2,"children":[{"title":"Frequently bought together","slug":"frequently-bought-together","depth":3,"children":[]},{"title":"Relaxed variant","slug":"relaxed-variant","depth":4,"children":[]},{"title":"Strict variant","slug":"strict-variant","depth":4,"children":[]},{"title":"Related items","slug":"related-items","depth":3,"children":[]},{"title":"Content-based filtering for Related items (Related content)","slug":"content-based-filtering-for-related-items-related-content","depth":4,"children":[]},{"title":"Trending items and Trending facets value","slug":"trending-items-and-trending-facets-value","depth":3,"children":[]},{"title":"Looking similar","slug":"looking-similar","depth":3,"children":[]}]},{"title":"Events requirements for the models","slug":"events-requirements-for-the-models","depth":2,"children":[{"title":"Events selection","slug":"events-selection","depth":3,"children":[]}]},{"title":"Training frequency","slug":"training-frequency","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/algolia/34bdaaeaccaa769c/docsearch.js","/_mintlify/custom/algolia/e18afef8ba6306ba/one-trust.js","/_mintlify/custom/algolia/5a5e6ade8ff45aec/utm-attribution.js","/_mintlify/custom/algolia/a4b9f2f416e55759/iframe-resize.js","/_mintlify/custom/algolia/dbca34a8de6b147e/instantsearch-api-signature-links.js","/_mintlify/custom/algolia/4e6ff31277aab3f2/segment-analytics.js","/_mintlify/custom/algolia/ae5f1d742fc727f6/optinmonster.js"],"subdomain":"algolia","siteName":"Algolia","title":"Algolia Recommend - Algolia","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-16T10:33:06.564Z","gitLastModified":"2026-09-16T10:31:26.000Z","originalFileLocation":"doc/guides/algolia-recommend/overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to use Algolia Recommend to display recommendations on your website.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Algolia\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Algolia Recommend - Algolia\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to use Algolia Recommend to display recommendations on your website.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Algolia\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.algolia.com/doc/guides/algolia-recommend/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://algolia.mintlify.site/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Algolia+Recommend\u0026amp;description=Learn+how+to+use+Algolia+Recommend+to+display+recommendations+on+your+website.\u0026amp;theme=174d56e14f330de525287b70\u0026amp;signature=7e17080ea67a98c78d88020a7b3923c80ed903255198999bbfe56c4c48ec1b95\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Algolia Recommend - Algolia\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to use Algolia Recommend to display recommendations on your website.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://algolia.mintlify.site/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Algolia+Recommend\u0026amp;description=Learn+how+to+use+Algolia+Recommend+to+display+recommendations+on+your+website.\u0026amp;theme=174d56e14f330de525287b70\u0026amp;signature=7e17080ea67a98c78d88020a7b3923c80ed903255198999bbfe56c4c48ec1b95\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/algolia/pODf0GWwkpqTo2Wx/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Algolia\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3970ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.algolia.com/doc/guides/algolia-recommend/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/doc/guides/algolia-recommend/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.algolia.com/#organization\",\"name\":\"Algolia\",\"url\":\"https://www.algolia.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/algolia/kiecJp3hu-WXhj-3/logo/light.svg?fit=max\u0026auto=format\u0026n=kiecJp3hu-WXhj-3\u0026q=85\u0026s=bf613e260ca94c0eb23384e6c0d5c77f\"},\"sameAs\":[\"https://www.linkedin.com/company/algolia/\",\"https://github.com/algolia\",\"https://x.com/algolia\",\"https://www.youtube.com/channel/UCTNkiq-SO8hay1PRx-it9Cw\"]},{\"@type\":\"WebSite\",\"@id\":\"https://www.algolia.com#website\",\"name\":\"Algolia\",\"url\":\"https://www.algolia.com\",\"publisher\":{\"@id\":\"https://www.algolia.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview#webpage\",\"url\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview\",\"name\":\"Algolia Recommend\",\"description\":\"Learn how to use Algolia Recommend to display recommendations on your website.\",\"dateModified\":\"2026-09-16T10:31:26.000Z\",\"isPartOf\":{\"@id\":\"https://www.algolia.com#website\"},\"breadcrumb\":{\"@id\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Optimization and Personalization\",\"item\":\"https://www.algolia.com/doc/guides/algolia-recommend/upgrade/recommend-js\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Algolia Recommend\",\"item\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview#article\",\"headline\":\"Algolia Recommend\",\"name\":\"Algolia Recommend\",\"description\":\"Learn how to use Algolia Recommend to display recommendations on your website.\",\"url\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview\",\"mainEntityOfPage\":{\"@id\":\"https://www.algolia.com/doc/guides/algolia-recommend/overview#webpage\"},\"dateModified\":\"2026-09-16T10:31:26.000Z\",\"publisher\":{\"@id\":\"https://www.algolia.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.algolia.com#website\"}}]}\u003c/script>","siteName":"Algolia","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-text","groups":[{"group":" ","hidden":true,"searchable":true,"pages":[{"title":"Algolia documentation | Search API guides, SDK and developer docs","mode":"custom","href":"/doc"},{"title":"Algolia glossary","sidebarTitle":"Glossary","href":"/doc/glossary"}]},{"group":"Get started","icon":"zap","root":{"title":"Get started with Algolia","sidebarTitle":"Get started","href":"/doc/guides/get-started"},"pages":[{"title":"Build your first search experience","href":"/doc/guides/get-started/quickstart"},{"title":"Build with AI agents","href":"/doc/guides/get-started/build-with-ai"},{"title":"Understand the basics","href":"/doc/guides/get-started/concepts"}]},{"group":"Search and Discovery platform","icon":"search","pages":[{"group":"Send and manage data","pages":[{"group":"Prepare your data","root":{"title":"Prepare your records for indexing","sidebarTitle":"Overview","href":"/doc/guides/sending-and-managing-data/prepare-your-data"},"pages":[{"group":"How to","pages":[{"title":"Create nested attributes","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/creating-and-using-nested-attributes"},{"title":"Reduce record size","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/reducing-object-size"},{"title":"Handle data relationships","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/handling-data-relationships"},{"title":"Split long pages into smaller records","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/indexing-long-documents"},{"title":"Create parent-child relationships","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/parent-child-relationships"},{"title":"Structure ecommerce product records","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/ecommerce-records"},{"title":"Make measures and dimensions searchable","href":"/doc/guides/sending-and-managing-data/prepare-your-data/how-to/dimensional-data"}]},{"group":"In depth","pages":[{"title":"Prepare your index","href":"/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/prepare-data-in-depth"},{"title":"Algolia records","href":"/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/what-is-in-a-record"},{"title":"Data cleaning","href":"/doc/guides/sending-and-managing-data/prepare-your-data/in-depth/data-sanitization"}]}]},{"group":"Send and update your data","root":{"title":"Send and update your data","sidebarTitle":"Overview","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data"},"pages":[{"group":"Connectors","root":{"title":"Connectors","sidebarTitle":"Overview","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors"},"pages":[{"title":"JSON connector","sidebarTitle":"JSON","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/json"},{"title":"CSV connector","sidebarTitle":"CSV","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/csv"},{"title":"Google BigQuery connector","sidebarTitle":"BigQuery","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/bigquery"},{"title":"MySQL connector","sidebarTitle":"MySQL","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/mysql"},{"title":"Elasticsearch connector","sidebarTitle":"Elasticsearch","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/elasticsearch"},{"title":"Push to Algolia connector","sidebarTitle":"Push to Algolia","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/push"},{"title":"Supabase connector","sidebarTitle":"Supabase","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/supabase"}]},{"group":"How to","pages":[{"title":"Import data from the dashboard","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-from-the-dashboard"},{"title":"Importing with the API","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-with-the-api"},{"title":"Incremental updates","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/incremental-updates"},{"title":"Sending records in batches","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/sending-records-in-batches"},{"title":"Transform your data with code","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/transform-your-data-with-code"},{"title":"Transform your data without code","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/transform-your-data-without-code"},{"title":"Enrich your records with Fetch","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/enrich-your-records-with-fetch"},{"title":"Post-indexing transformations","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/post-indexing-transformations"},{"title":"AI-assisted transformations","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/ai-assisted-transformations"}]},{"group":"In depth","pages":[{"title":"Data synchronization strategies","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/the-different-synchronization-strategies"},{"title":"Wait for indexing tasks","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous"},{"title":"Handling concurrency with versioning","href":"/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/handling-concurrency-with-versioning"}]}]},{"group":"Manage indices and apps","pages":[{"group":"Manage indices","root":{"title":"Manage indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices"},"pages":[{"title":"Export and import indices and settings","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/export-import-indices"},{"title":"Copy and move indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/copy-move-indices"},{"title":"Delete indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/delete-indices"},{"title":"Choosing between one or more indices","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/concepts/one-or-more-indices"},{"title":"Indices and analytics","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/concepts/indices-analytics"},{"title":"Generate a sitemap from an Algolia index","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/tutorial/generate-sitemap-from-index"}]},{"title":"Manage your Algolia applications","href":"/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-your-apps"}]}]},{"group":"Manage results","pages":[{"group":"Relevance overview","root":{"title":"Relevance overview","href":"/doc/guides/managing-results/relevance-overview"},"pages":[{"title":"The eight ranking criteria","href":"/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria"},{"title":"Relevance","href":"/doc/guides/managing-results/relevance-overview/in-depth/defining-relevance"},{"title":"Search is more than textual matching","href":"/doc/guides/managing-results/relevance-overview/in-depth/textual-matching"}]},{"group":"Essential steps","pages":[{"group":"Searchable attributes","root":{"title":"Searchable attributes","href":"/doc/guides/managing-results/must-do/searchable-attributes"},"pages":[{"title":"Configure searchable attributes the right way","href":"/doc/guides/managing-results/must-do/searchable-attributes/how-to/configuring-searchable-attributes-the-right-way"}]},{"group":"Custom ranking","root":{"title":"Custom ranking","href":"/doc/guides/managing-results/must-do/custom-ranking"},"pages":[{"title":"Create custom ranking attributes","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/configure-custom-ranking"},{"title":"Boost or penalize records","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/boost-or-penalize-some-records"},{"title":"Precision of custom ranking metrics","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/controlling-custom-ranking-metrics-precision"},{"title":"Bayesian averages in custom ranking","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/bayesian-average"},{"title":"Custom ranking of results per category","href":"/doc/guides/managing-results/must-do/custom-ranking/how-to/custom-ranking-per-category"}]}]},{"group":"Refine results","pages":[{"group":"Sorting results","pages":[{"title":"Sorting results","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/sorting"},{"group":"How to","pages":[{"title":"Sort by attribute","href":"/doc/guides/managing-results/refine-results/sorting/how-to/sort-by-attribute"},{"title":"Sort an index by date","href":"/doc/guides/managing-results/refine-results/sorting/how-to/sort-an-index-by-date"},{"title":"Create a replica index","href":"/doc/guides/managing-results/refine-results/sorting/how-to/creating-replicas"},{"title":"Search in a replica index","href":"/doc/guides/managing-results/refine-results/sorting/how-to/search-in-a-replica-index"},{"title":"Rename replica indices","href":"/doc/guides/managing-results/refine-results/sorting/how-to/rename-a-replica-index"},{"title":"Manage multiple indices","href":"/doc/guides/managing-results/refine-results/sorting/how-to/set-settings-and-forward-to-replicas"},{"title":"UI sorting widgets","href":"/doc/guides/managing-results/refine-results/sorting/how-to/use-sorting-ui-widget"}]},{"group":"In depth","pages":[{"title":"Exhaustive sorting","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/exhaustive-sort"},{"title":"Relevant sorting","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/relevant-sort"},{"title":"Understanding replicas","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/replicas"},{"title":"What is the effect of a replica on the number of records?","href":"/doc/guides/managing-results/refine-results/sorting/in-depth/replicas-impact-on-pricing"}]}]},{"group":"Faceting","root":{"title":"Faceting","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/faceting"},"pages":[{"title":"How to declare attributes for faceting with the API","href":"/doc/guides/managing-results/refine-results/faceting/how-to/declaring-attributes-for-faceting"},{"title":"How to declare attributes for faceting in the dashboard","href":"/doc/guides/managing-results/refine-results/faceting/how-to/declaring-attributes-for-faceting-with-dashboard"}]},{"group":"Filtering","root":{"title":"Filtering","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/filtering"},"pages":[{"title":"Filter by attributes","href":"/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-attributes"},{"title":"Filters and boolean operators","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/combining-boolean-operators"},{"title":"Filter scoring","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/filter-scoring"},{"title":"Filters and arrays of objects","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/arrays-of-objects"},{"title":"Filters and facet filters","href":"/doc/guides/managing-results/refine-results/filtering/in-depth/filters-and-facetfilters"}]},{"title":"Deduplicate results with distinct","href":"/doc/guides/managing-results/refine-results/grouping"},{"group":"Geo location","pages":[{"title":"Geo location","sidebarTitle":"Overview","href":"/doc/guides/managing-results/refine-results/geolocation"},{"title":"Filter results around a location","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/filter-results-around-a-location"},{"title":"Filter results inside a rectangle","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/filter-results-inside-a-rectangle-area"},{"title":"Filter results inside a polygon","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/filter-results-inside-a-polygonal-area"},{"title":"Geo ranking information","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/geo-ranking-info"},{"title":"How to solve the 180th meridian issue","href":"/doc/guides/managing-results/refine-results/geolocation/how-to/how-to-resolve-180-meridian-issue"},{"title":"Geographical ranking precision","href":"/doc/guides/managing-results/refine-results/geolocation/in-depth/geo-ranking-precision"}]}]},{"group":"Rules","pages":[{"group":"Rules overview","root":{"title":"Rules overview","sidebarTitle":"Overview","href":"/doc/guides/managing-results/rules/rules-overview"},"pages":[{"title":"Implement rules","href":"/doc/guides/managing-results/rules/rules-overview/in-depth/implementing-rules"},{"title":"Add default search parameters with rules","href":"/doc/guides/managing-results/rules/rules-overview/how-to/add-default-search-parameters-with-rules"},{"title":"Customize search results by device","href":"/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform"},{"title":"Rules matching algorithm","href":"/doc/guides/managing-results/rules/rules-overview/in-depth/rule-matching-algorithm"},{"title":"Debug rules","href":"/doc/guides/managing-results/rules/rules-overview/in-depth/debugging-rules"}]},{"group":"Detect intent","pages":[{"title":"Detect intent","sidebarTitle":"Overview","href":"/doc/guides/managing-results/rules/detecting-intent"},{"title":"Add filters based on the query","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/applying-a-custom-filter-for-a-specific-query"},{"title":"Dynamic filtering with Rules","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/applying-a-filter-if-the-query-match-a-facet-value"},{"title":"Enhance search results with query-based rules","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/applying-search-parameters-for-a-specific-query"},{"title":"Detect keywords","href":"/doc/guides/managing-results/rules/detecting-intent/how-to/detecting-keywords"}]},{"group":"Merchandising","root":{"title":"Merchandising","sidebarTitle":"Overview","href":"/doc/guides/managing-results/rules/merchandising-and-promoting"},"pages":[{"title":"Promote results with rules","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/promote-hits"},{"title":"Keep pinned items together with pin blocks","sidebarTitle":"Pin blocks","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/pin-blocks"},{"title":"Hide results with rules","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/how-to-hide-hits"},{"title":"Promote records with optional filters","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/how-to-promote-with-optional-filters"},{"title":"Redirect searches to a URL","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/redirects"},{"title":"Add banners","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/add-banners"},{"title":"Merchandise on empty queries","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/merchandise-on-empty-query"},{"title":"Multiple consequences","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/combining-multiple-consequences"},{"title":"Merchandise category pages","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/merchandising-category-pages"},{"title":"Merchandise facets","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/merchandising-facets"},{"title":"Add search parameters with JSON","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/how-to/rules-query-parameters"},{"title":"Optional filters","href":"/doc/guides/managing-results/rules/merchandising-and-promoting/in-depth/optional-filters"}]}]},{"group":"Optimize search results","pages":[{"group":"Synonyms","pages":[{"title":"Synonyms","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/adding-synonyms"},{"title":"Manage synonyms in the dashboard","href":"/doc/guides/managing-results/optimize-search-results/adding-synonyms/how-to/managing-synonyms-from-the-dashboard"}]},{"group":"Typo tolerance","root":{"title":"Typo tolerance","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance"},"pages":[{"title":"Prevent typosquatting","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-prevent-typosquatting"},{"title":"Search in hyphenated attributes","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-search-in-hyphenated-attributes"},{"title":"Configure typo tolerance","href":"/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance"}]},{"group":"Natural languages","pages":[{"title":"Natural languages","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp"},{"group":"How to","pages":[{"title":"Multilingual search","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/multilingual-search"},{"title":"Set an index's query language","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/how-to-set-an-index-query-language"},{"title":"Customize stop words","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/customize-stop-words"},{"title":"Customize plurals and other declensions","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/customize-plurals-and-other-declensions"},{"title":"Customize word segmentation","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/how-to/customize-segmentation"}]},{"group":"In depth","pages":[{"title":"Language-specific configurations","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations"},{"title":"Normalization","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/normalization"},{"title":"Tokenization","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/tokenization"},{"title":"Splitting and concatenation","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/splitting-and-concatenation"},{"title":"Supported languages","href":"/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/supported-languages"}]}]},{"group":"Empty or insufficient results","root":{"title":"Empty or insufficient results","href":"/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results"},"pages":[{"title":"Improve results by removing less-important words","href":"/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/in-depth/why-use-remove-words-if-no-results"}]},{"group":"Override engine defaults","pages":[{"title":"Override Algolia defaults","sidebarTitle":"Overview","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults"},{"title":"Match queries in the middle or end of words","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/how-to/how-can-i-make-queries-within-the-middle-of-a-word"},{"title":"Prefix search","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/prefix-searching"},{"title":"Adjusting the Exact criterion","href":"/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings"}]}]},{"group":"Troubleshooting","pages":[{"title":"Troubleshooting search","href":"/doc/guides/managing-results/troubleshooting/troubleshooting-search"},{"title":"Troubleshooting relevance","href":"/doc/guides/managing-results/troubleshooting/troubleshooting-relevance"}]}]},{"group":"Compose results","root":{"title":"Compositions","href":"/doc/guides/compositions"},"pages":[{"group":"Solutions","pages":[{"group":"Search","pages":[{"title":"Place sponsored products in search results","sidebarTitle":"Sponsored products","href":"/doc/guides/compositions/solutions/search/sponsored-products"},{"title":"Federated search with multifeed compositions","sidebarTitle":"Federated search","href":"/doc/guides/compositions/solutions/search/federated-search"}]}]},{"group":"Building blocks","pages":[{"group":"Smart Groups","root":{"title":"Smart Groups","href":"/doc/guides/compositions/smart-groups/smart-groups"},"pages":[{"group":"Group types","pages":[{"title":"Search-based groups","href":"/doc/guides/compositions/smart-groups/search-based-groups"},{"title":"Native retail media orchestration","href":"/doc/guides/compositions/smart-groups/native-rmn-orchestration"},{"title":"External source groups","href":"/doc/guides/compositions/smart-groups/external-source-groups"},{"title":"Recommend-based groups","href":"/doc/guides/compositions/smart-groups/recommend-based-groups"}]}]}]},{"group":"Configure","pages":[{"title":"Return multiple result sets with multifeed compositions","sidebarTitle":"Multifeed compositions","href":"/doc/guides/compositions/multifeed-compositions"},{"title":"Choose how to deduplicate results","href":"/doc/guides/compositions/smart-groups/deduplication-strategy"},{"title":"Sort organic results","href":"/doc/guides/compositions/sorting-strategy"}]}]},{"group":"AI relevance","pages":[{"title":"Dynamic Facets","href":"/doc/guides/algolia-ai/dynamic-facets"},{"title":"AI Synonyms","href":"/doc/guides/algolia-ai/dynamic-synonym-suggestions"},{"group":"Dynamic Re-Ranking","root":{"title":"Dynamic Re-Ranking","href":"/doc/guides/algolia-ai/re-ranking"},"pages":[{"title":"Enable Dynamic Re-Ranking on category pages","href":"/doc/guides/algolia-ai/re-ranking/tutorials/re-rank-category-pages"}]},{"group":"NeuralSearch","pages":[{"title":"Get started with NeuralSearch","sidebarTitle":"Get started","href":"/doc/guides/ai-relevance/neuralsearch/get-started"},{"title":"Adaptive Intent","href":"/doc/guides/ai-relevance/neuralsearch/adaptive-intent"},{"title":"NeuralSearch A/B testing","sidebarTitle":"A/B testing","href":"/doc/guides/ai-relevance/neuralsearch/ab-testing"},{"title":"NeuralSearch limits and unsupported features","sidebarTitle":"Limitations","href":"/doc/guides/ai-relevance/neuralsearch/limitations"},{"title":"Manage model training preferences","sidebarTitle":"Model training preferences","href":"/doc/guides/ai-relevance/neuralsearch/model-training"}]},{"title":"Query Categorization","href":"/doc/guides/algolia-ai/query-categorization"},{"title":"Optimize search settings with AI Assist","href":"/doc/guides/algolia-ai/optimize-search-settings"}]},{"group":"Build Search UI","pages":[{"group":"InstantSearch.js","pages":[{"title":"What is InstantSearch.js?","href":"/doc/guides/building-search-ui/what-is-instantsearch/js"},{"title":"How to install InstantSearch.js","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/js"},{"sidebarTitle":"Quickstart","title":"Get started with InstantSearch.js","href":"/doc/guides/building-search-ui/getting-started/js"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with InstantSearch.js","href":"/doc/guides/building-search-ui/events/js"},{"title":"Styling and theming","href":"/doc/guides/building-search-ui/styling/js"},{"sidebarTitle":"Upgrade","title":"Upgrade InstantSearch.js","href":"/doc/guides/building-search-ui/upgrade-guides/js"},{"group":"Widgets","pages":[{"title":"Showcase for InstantSearch.js widgets","sidebarTitle":"Widgets showcase","mode":"wide","href":"/doc/guides/building-search-ui/widgets/showcase/js"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/js"},{"title":"Create your own widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/js"},{"sidebarTitle":"Change browser defaults for custom search inputs","title":"Change browser defaults for InstantSearch.js","href":"/doc/guides/building-search-ui/widgets/disabling-default-browser-behavior/js"}]},{"group":"UI \u0026 UX patterns","pages":[{"group":"Autocomplete","pages":[{"title":"Autocomplete","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/js"},{"title":"Build a Query Suggestions UI","sidebarTitle":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/query-suggestions/js"},{"title":"Federated two-column autocomplete","sidebarTitle":"Federated search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/federated/js"},{"title":"Build a mentions text box","sidebarTitle":"Mentions text box","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/mentions/js"}]},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/js"},{"title":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/js"},{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/js"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/js"},{"sidebarTitle":"Infinite scroll","title":"Infinite scroll with InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/js"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/js"},{"sidebarTitle":"Recommendations","title":"Recommendations in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/recommend/js"},{"sidebarTitle":"OpenSearch protocol","title":"Implement the OpenSearch protocol with InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/opensearch/js"},{"sidebarTitle":"Redirects","title":"Redirects in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/js"},{"sidebarTitle":"Structured results","title":"Structured results in InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/structured-results/js"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/js"},{"title":"Facet drop-down menus","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-dropdown/js"},{"sidebarTitle":"Loading indicator","title":"Loading indicator with InstantSearch.js","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/loading-indicator/js"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/conditional-display/js"},{"sidebarTitle":"Conditional requests","title":"Conditional requests with InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/conditional-requests/js"},{"sidebarTitle":"API keys/security","title":"Secured API keys in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/api-keys-security/js"},{"sidebarTitle":"Routing URLs","title":"Routing and URL syncing in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/routing-urls/js"},{"title":"Integrate Google Analytics","href":"/doc/guides/building-search-ui/going-further/integrate-google-analytics/js"},{"title":"Improve performance","href":"/doc/guides/building-search-ui/going-further/improve-performance/js"},{"sidebarTitle":"Optimize search requests","title":"Optimize InstantSearch.js search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/js"},{"group":"Backend search","pages":[{"title":"Backend search with InstantSearch.js","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/js"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/js"},{"title":"Implement backend search with InstantSearch.js","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/js"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/js"}]},{"title":"Access state outside the lifecycle","href":"/doc/guides/building-search-ui/going-further/access-state-outside-lifecycle/js"},{"sidebarTitle":"Server-side rendering","title":"Dynamic rendering with InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/server-side-rendering/js"},{"sidebarTitle":"Automatic filtering","title":"Turn off automatic filtering in InstantSearch.js","href":"/doc/guides/building-search-ui/going-further/automatic-filtering/js"},{"title":"Using InstantSearch.js on mobile","sidebarTitle":"Native","href":"/doc/guides/building-search-ui/going-further/native/js"},{"group":"Customize chat","pages":[{"sidebarTitle":"AI search experience","title":"Build an AI-powered search experience","href":"/doc/guides/building-search-ui/going-further/chat-customization/ai-search-experience/js"},{"sidebarTitle":"Loader content","title":"Customize the chat loader","href":"/doc/guides/building-search-ui/going-further/chat-customization/loading-message/js"},{"sidebarTitle":"Loader behavior","title":"Control when and where the chat loader shows","href":"/doc/guides/building-search-ui/going-further/chat-customization/loader-behavior/js"},{"sidebarTitle":"Results carousel","title":"Customize the chat results carousel","href":"/doc/guides/building-search-ui/going-further/chat-customization/results-carousel/js"},{"sidebarTitle":"Welcome screen","title":"Show starter prompts on the chat welcome screen","href":"/doc/guides/building-search-ui/going-further/chat-customization/welcome-screen/js"}]}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/js"},{"sidebarTitle":"Demos","title":"UI examples for InstantSearch.js","href":"/doc/guides/building-search-ui/resources/demos/js"},{"title":"SEO checklist","href":"/doc/guides/building-search-ui/resources/seo/js"}]}]},{"group":"React InstantSearch","pages":[{"title":"What is React InstantSearch?","href":"/doc/guides/building-search-ui/what-is-instantsearch/react"},{"title":"Install React InstantSearch","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/react"},{"sidebarTitle":"Quickstart","title":"Get started with React InstantSearch","href":"/doc/guides/building-search-ui/getting-started/react"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with React InstantSearch","href":"/doc/guides/building-search-ui/events/react"},{"title":"Styling and theming","href":"/doc/guides/building-search-ui/styling/react"},{"sidebarTitle":"Upgrade guide","title":"Upgrade React InstantSearch","href":"/doc/guides/building-search-ui/upgrade-guides/react"},{"group":"Widgets","pages":[{"title":"Showcase for React InstantSearch widgets","sidebarTitle":"Widget showcase","mode":"wide","href":"/doc/guides/building-search-ui/widgets/showcase/react"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/react"},{"title":"Create your own widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/react"},{"sidebarTitle":"Show and hide widgets","title":"Show and hide React InstantSearch widgets","href":"/doc/guides/building-search-ui/widgets/show-and-hide-widgets/react"},{"title":"Change browser defaults","href":"/doc/guides/building-search-ui/widgets/disabling-default-browser-behavior/react"}]},{"group":"UI \u0026 UX patterns","pages":[{"group":"Autocomplete","pages":[{"title":"Autocomplete","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/react"},{"title":"Build a Query Suggestions UI","sidebarTitle":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/query-suggestions/react"},{"title":"Federated two-column autocomplete","sidebarTitle":"Federated search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/federated/react"},{"title":"Build a mentions text box","sidebarTitle":"Mentions text box","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/examples/mentions/react"}]},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/react"},{"title":"Query Suggestions","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/react"},{"title":"Highlighting and snippeting","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/react"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/react"},{"title":"Infinite scroll with React InstantSearch","sidebarTitle":"Infinite scroll","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/react"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/react"},{"title":"Recommendations","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/recommend/react"},{"sidebarTitle":"OpenSearch protocol","title":"Implement the OpenSearch protocol with React InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/opensearch/react"},{"title":"Redirects","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/react"},{"title":"Structured results","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/structured-results/react"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/react"},{"title":"Facet drop-down menus","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-dropdown/react"},{"title":"Loading indicator","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/loading-indicator/react"}]},{"group":"Going further","pages":[{"title":"Conditional display","href":"/doc/guides/building-search-ui/going-further/conditional-display/react"},{"title":"Conditional requests","href":"/doc/guides/building-search-ui/going-further/conditional-requests/react"},{"title":"Secured API keys","href":"/doc/guides/building-search-ui/going-further/api-keys-security/react"},{"sidebarTitle":"Routing URLs","title":"Routing and URL syncing in React InstantSearch","href":"/doc/guides/building-search-ui/going-further/routing-urls/react"},{"title":"Integrate Google Analytics","href":"/doc/guides/building-search-ui/going-further/integrate-google-analytics/react"},{"title":"Improve performance","href":"/doc/guides/building-search-ui/going-further/improve-performance/react"},{"title":"Optimize search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/react"},{"group":"Backend search","pages":[{"title":"Backend search with React InstantSearch","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/react"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/react"},{"title":"Implement backend search with React InstantSearch","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/react"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/react"}]},{"title":"React Native","href":"/doc/guides/building-search-ui/going-further/native/react"},{"title":"Server-side rendering","href":"/doc/guides/building-search-ui/going-further/server-side-rendering/react"},{"sidebarTitle":"Automatic filtering","title":"Turn off automatic filtering in React InstantSearch","href":"/doc/guides/building-search-ui/going-further/automatic-filtering/react"},{"group":"Customize chat","pages":[{"sidebarTitle":"AI search experience","title":"Build an AI-powered search experience","href":"/doc/guides/building-search-ui/going-further/chat-customization/ai-search-experience/react"},{"sidebarTitle":"Legal notice","title":"Add a legal notice to the chat widget","href":"/doc/guides/building-search-ui/going-further/chat-customization/legal-notice/react"},{"sidebarTitle":"Loader content","title":"Customize the chat loader","href":"/doc/guides/building-search-ui/going-further/chat-customization/loading-message/react"},{"sidebarTitle":"Loader behavior","title":"Control when and where the chat loader shows","href":"/doc/guides/building-search-ui/going-further/chat-customization/loader-behavior/react"},{"sidebarTitle":"Results carousel","title":"Customize the chat results carousel","href":"/doc/guides/building-search-ui/going-further/chat-customization/results-carousel/react"},{"sidebarTitle":"Welcome screen","title":"Show starter prompts on the chat welcome screen","href":"/doc/guides/building-search-ui/going-further/chat-customization/welcome-screen/react"}]}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/react"},{"sidebarTitle":"Demos","title":"UI examples for React InstantSearch","href":"/doc/guides/building-search-ui/resources/demos/react"},{"title":"SEO checklist","href":"/doc/guides/building-search-ui/resources/seo/react"}]}]},{"group":"Vue InstantSearch","pages":[{"title":"What is Vue InstantSearch?","href":"/doc/guides/building-search-ui/what-is-instantsearch/vue"},{"title":"How to install Vue InstantSearch","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/vue"},{"sidebarTitle":"Quickstart","title":"Get started with Vue InstantSearch","href":"/doc/guides/building-search-ui/getting-started/vue"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with Vue InstantSearch","href":"/doc/guides/building-search-ui/events/vue"},{"title":"Styling and theming","href":"/doc/guides/building-search-ui/styling/vue"},{"sidebarTitle":"Upgrade","title":"Upgrade Vue InstantSearch","href":"/doc/guides/building-search-ui/upgrade-guides/vue"},{"group":"Widgets","pages":[{"title":"Showcase for Vue InstantSearch widgets","sidebarTitle":"Widget showcase","mode":"wide","href":"/doc/guides/building-search-ui/widgets/showcase/vue"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/vue"},{"title":"Create your widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/vue"},{"title":"Show and hide widgets","href":"/doc/guides/building-search-ui/widgets/show-and-hide-widgets/vue"},{"sidebarTitle":"Change browser defaults for custom search inputs","title":"Change browser defaults for Vue InstantSearch","href":"/doc/guides/building-search-ui/widgets/disabling-default-browser-behavior/vue"}]},{"group":"UI \u0026 UX patterns","pages":[{"title":"Autocomplete","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/vue"},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/vue"},{"group":"Query Suggestions","root":{"title":"Query Suggestions","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/vue"},"pages":[{"title":"Build a Query Suggestions UI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/vue"}]},{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/vue"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/vue"},{"sidebarTitle":"Infinite scroll","title":"Infinite scroll with Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/vue"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/vue"},{"sidebarTitle":"OpenSearch protocol","title":"Implement the OpenSearch protocol with Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/opensearch/vue"},{"sidebarTitle":"Redirects","title":"Redirects in Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/vue"},{"sidebarTitle":"Structured results","title":"Structured results in Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/structured-results/vue"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/vue"},{"sidebarTitle":"Loading indicator","title":"Loading indicator with Vue InstantSearch","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/loading-indicator/vue"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/conditional-display/vue"},{"sidebarTitle":"Conditional requests","title":"Conditional requests with Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/conditional-requests/vue"},{"sidebarTitle":"API keys/security","title":"Secured API keys in Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/api-keys-security/vue"},{"sidebarTitle":"Routing URLs","title":"Routing and URL syncing in Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/routing-urls/vue"},{"title":"Integrate Google Analytics","href":"/doc/guides/building-search-ui/going-further/integrate-google-analytics/vue"},{"sidebarTitle":"Improve performance","title":"Improve performance for Vue InstantSearch","href":"/doc/guides/building-search-ui/going-further/improve-performance/vue"},{"sidebarTitle":"Optimize search requests","title":"Optimize Vue InstantSearch search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/vue"},{"group":"Backend search","pages":[{"title":"Backend search with Vue InstantSearch","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/vue"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/vue"},{"title":"Implement backend search with Vue InstantSearch","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/vue"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/vue"}]},{"title":"Use Vue InstantSearch with mobile frameworks","sidebarTitle":"Native","href":"/doc/guides/building-search-ui/going-further/native/vue"},{"title":"Server-side rendering","href":"/doc/guides/building-search-ui/going-further/server-side-rendering/vue"}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/vue"},{"sidebarTitle":"Demos","title":"UI examples for Vue InstantSearch","href":"/doc/guides/building-search-ui/resources/demos/vue"},{"title":"SEO checklist","href":"/doc/guides/building-search-ui/resources/seo/vue"}]}]},{"group":"With Angular","pages":[{"sidebarTitle":"Get started","title":"Get started with InstantSearch.js in Angular","href":"/doc/guides/building-search-ui/getting-started/angular"}]},{"group":"InstantSearch iOS","pages":[{"title":"What is InstantSearch iOS","href":"/doc/guides/building-search-ui/what-is-instantsearch/ios"},{"title":"Install InstantSearch iOS","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/ios"},{"group":"Get started","root":{"title":"Get started with InstantSearch iOS","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/getting-started/ios"},"pages":[{"title":"Get started programmatically","href":"/doc/guides/building-search-ui/getting-started/how-to/programmatically/ios"},{"title":"Get started with SwiftUI","href":"/doc/guides/building-search-ui/getting-started/how-to/declarative/ios"}]},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with InstantSearch iOS","href":"/doc/guides/building-search-ui/events/ios"},{"sidebarTitle":"Upgrade","title":"Upgrading InstantSearch iOS","href":"/doc/guides/building-search-ui/upgrade-guides/ios"},{"group":"Widgets","pages":[{"sidebarTitle":"Widgets showcase","title":"Showcase for InstantSearch iOS widgets","href":"/doc/guides/building-search-ui/widgets/showcase/ios"},{"title":"Customize existing widgets","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/ios"},{"title":"Create your own widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/ios"}]},{"group":"UI \u0026 UX patterns","pages":[{"sidebarTitle":"Autocomplete","title":"Build an autocomplete with InstantSearch iOS","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/ios"},{"title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/ios"},{"group":"Query Suggestions","root":{"title":"Query Suggestions","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/ios"},"pages":[{"title":"Build a Query Suggestions UI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/ios"},{"title":"Build a Query Suggestions UI with UIKit","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/programatically/ios"},{"title":"Build a Query Suggestions UI with SwiftUI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/declarative/ios"}]},{"title":"Highlighting and snippeting","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/ios"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/ios"},{"title":"Infinite scroll with InstantSearch iOS","sidebarTitle":"Infinite scroll","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/ios"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/ios"},{"title":"Sorting refinements","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/sorting-refinements/ios"},{"sidebarTitle":"Filtering patterns","title":"Filtering patterns for InstantSearch iOS","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/filtering-patterns/ios"},{"title":"Redirects","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/ios"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/ios"},{"title":"Voice search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/voice-search/ios"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in InstantSearch iOS","href":"/doc/guides/building-search-ui/going-further/conditional-display/ios"},{"title":"Conditional requests","href":"/doc/guides/building-search-ui/going-further/conditional-requests/ios"},{"title":"Secured API keys","href":"/doc/guides/building-search-ui/going-further/api-keys-security/ios"},{"sidebarTitle":"Improve performance","title":"Improve performance for InstantSearch iOS","href":"/doc/guides/building-search-ui/going-further/improve-performance/ios"},{"title":"Optimize search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/ios"},{"group":"Backend search","pages":[{"title":"Backend search with InstantSearch iOS","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/ios"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/ios"},{"title":"Implement backend search with InstantSearch on iOS","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/ios"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/ios"}]},{"title":"Telemetry","href":"/doc/guides/building-search-ui/going-further/telemetry/ios"}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/ios"},{"sidebarTitle":"Demos","title":"UI examples for InstantSearch iOS","href":"/doc/guides/building-search-ui/resources/demos/ios"},{"title":"Privacy manifests","href":"/doc/guides/building-search-ui/resources/privacy-manifest/ios"}]}]},{"group":"InstantSearch Android","pages":[{"title":"What is InstantSearch Android?","href":"/doc/guides/building-search-ui/what-is-instantsearch/android"},{"title":"How to install InstantSearch Android","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/android"},{"group":"Get started","root":{"title":"Get started with InstantSearch Android","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/getting-started/android"},"pages":[{"title":"Get started with imperative UI","href":"/doc/guides/building-search-ui/getting-started/how-to/programmatically/android"},{"title":"Get started with declarative UI","href":"/doc/guides/building-search-ui/getting-started/how-to/declarative/android"}]},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with InstantSearch Android","href":"/doc/guides/building-search-ui/events/android"},{"sidebarTitle":"Upgrade guide","title":"Upgrading InstantSearch Android","href":"/doc/guides/building-search-ui/upgrade-guides/android"},{"group":"Widgets","pages":[{"sidebarTitle":"Widget showcase","title":"Showcase for InstantSearch Android widgets","href":"/doc/guides/building-search-ui/widgets/showcase/android"},{"sidebarTitle":"Customize an existing widget","title":"Customize an InstantSearch Android widget","href":"/doc/guides/building-search-ui/widgets/customize-an-existing-widget/android"},{"sidebarTitle":"Create your own widgets","title":"Create your own InstantSearch Android widgets","href":"/doc/guides/building-search-ui/widgets/create-your-own-widgets/android"}]},{"group":"UI \u0026 UX patterns","pages":[{"sidebarTitle":"Autocomplete","title":"Build an autocomplete with InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/autocomplete/android"},{"sidebarTitle":"Multi-index search","title":"Multi-index search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/multi-index-search/android"},{"group":"Query Suggestions","root":{"title":"Query Suggestions","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/android"},"pages":[{"title":"Build a Query Suggestions UI","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/query-suggestions/tutorials/building-query-suggestions-ui/android"}]},{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/android"},{"title":"Pagination","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/pagination/android"},{"title":"Infinite scroll with InstantSearch Android","sidebarTitle":"Infinite scroll","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/infinite-scroll/android"},{"title":"Geo search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/geo-search/android"},{"sidebarTitle":"Sorting refinements","title":"Sorting refinements in InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/sorting-refinements/android"},{"sidebarTitle":"Filtering patterns","title":"Filtering patterns for InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/filtering-patterns/android"},{"sidebarTitle":"Redirects","title":"Redirects in InstantSearch Android","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/redirects/android"},{"title":"Facet display","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/android"},{"title":"Voice search","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/voice-search/android"}]},{"group":"Going further","pages":[{"sidebarTitle":"Conditional display","title":"Conditional display in InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/conditional-display/android"},{"sidebarTitle":"Conditional requests","title":"Conditional requests with InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/conditional-requests/android"},{"sidebarTitle":"API keys/security","title":"Secured API keys in InstantSearch for Android","href":"/doc/guides/building-search-ui/going-further/api-keys-security/android"},{"sidebarTitle":"Improve performance","title":"Improve performance for InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/improve-performance/android"},{"sidebarTitle":"Optimize search requests","title":"Optimize InstantSearch Android search requests","href":"/doc/guides/building-search-ui/going-further/optimize-search-request-usage/android"},{"group":"Backend search","pages":[{"title":"Backend search with InstantSearch Android","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/going-further/backend-search/android"},{"title":"Understand the API response","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/understanding-the-api-response/android"},{"title":"Implement backend search with InstantSearch on Android","sidebarTitle":"Backend search with InstantSearch","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/android"},{"title":"Backend search with an API client","href":"/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-search-with-an-api-client/android"}]},{"sidebarTitle":"Telemetry","title":"Telemetry collection in InstantSearch Android","href":"/doc/guides/building-search-ui/going-further/telemetry/android"}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/android"},{"sidebarTitle":"Demos","title":"UI examples for InstantSearch Android","href":"/doc/guides/building-search-ui/resources/demos/android"}]}]},{"group":"Algolia for Flutter","pages":[{"title":"Algolia for Flutter","href":"/doc/guides/building-search-ui/what-is-instantsearch/flutter"},{"title":"How to install the Flutter Helper","sidebarTitle":"Installation","href":"/doc/guides/building-search-ui/installation/flutter"},{"title":"Get started with Flutter Helper","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/getting-started/flutter"},{"sidebarTitle":"Click and conversion events","title":"Send click and conversion events with the Flutter Helper","href":"/doc/guides/building-search-ui/events/flutter"},{"group":"Widgets","pages":[{"title":"Showcase for Flutter helper components","sidebarTitle":"Widgets showcase","href":"/doc/guides/building-search-ui/widgets/showcase/flutter"}]},{"group":"UI \u0026 UX patterns","pages":[{"sidebarTitle":"Highlighting and snippeting","title":"Highlighting in Algolia for Flutter","href":"/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/flutter"}]},{"group":"Ecommerce UI template","pages":[{"title":"Ecommerce UI template","sidebarTitle":"Overview","href":"/doc/guides/building-search-ui/ecommerce-ui-template/overview/flutter"},{"title":"Get started with the Ecommerce UI template","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/ecommerce-ui-template/getting-started/flutter"},{"group":"Components","pages":[{"title":"Components","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/flutter"},{"title":"Showcase","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/showcase/flutter"},{"title":"Autocomplete","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/search-autocomplete/flutter"},{"group":"Product listing page","pages":[{"title":"Display products","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-display/display-products/flutter"},{"title":"Product card","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-display/product-card/flutter"},{"title":"No results handler","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-display/no-results-handler/flutter"}]},{"group":"Filters and sorting","pages":[{"title":"Refinements","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-filter-and-nav/filters-refinements/flutter"},{"title":"Refinement widgets","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-filter-and-nav/refinement-widgets/flutter"},{"title":"Sort UI components","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/product-listing-page-filter-and-nav/sort/flutter"}]},{"group":"Data sources","pages":[{"title":"ProductRepository","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/data-sources/product-repository/flutter"},{"title":"SuggestionRepository","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/data-sources/suggestion-repository/flutter"},{"title":"SearchRepository","href":"/doc/guides/building-search-ui/ecommerce-ui-template/components/in-depth/data-sources/search-repository/flutter"}]}]}]},{"group":"Resources","pages":[{"sidebarTitle":"UI Design Kit","title":"UI Design Kit (Figma)","href":"/doc/guides/building-search-ui/resources/ui-kit/flutter"}]}]},{"group":"Algolia Experiences","tag":"pilot","pages":[{"title":"Get started with Algolia Experiences","sidebarTitle":"Get started","href":"/doc/guides/building-search-ui/algolia-experiences/get-started"},{"title":"Use Algolia Experiences in a React app","sidebarTitle":"Use in React","href":"/doc/guides/building-search-ui/algolia-experiences/use-in-react"},{"title":"Edit and preview your experience from your website","sidebarTitle":"Edit from your website","href":"/doc/guides/building-search-ui/algolia-experiences/preview-changes"},{"title":"Troubleshoot Algolia Experiences","sidebarTitle":"Troubleshooting","href":"/doc/guides/building-search-ui/algolia-experiences/troubleshooting"}]}]},{"group":"Click and conversion events","root":{"title":"Click and conversion events","href":"/doc/guides/sending-events"},"pages":[{"title":"Choose how to send events","sidebarTitle":"Implementation paths","href":"/doc/guides/sending-events/getting-started"},{"group":"Concepts","pages":[{"title":"Event types","href":"/doc/guides/sending-events/concepts/event-types"},{"title":"User token","href":"/doc/guides/sending-events/concepts/usertoken"}]},{"group":"Guides","pages":[{"title":"Which events to track","href":"/doc/guides/sending-events/guides/plan"},{"title":"Keep track of query IDs","href":"/doc/guides/sending-events/guides/queryid"},{"title":"Validate your events","href":"/doc/guides/sending-events/guides/validate"},{"group":"Send events with InstantSearch","pages":[{"title":"Send ecommerce events","sidebarTitle":"Ecommerce events","href":"/doc/guides/sending-events/instantsearch/send-ecommerce-events"},{"title":"Send media events","sidebarTitle":"Media events","href":"/doc/guides/sending-events/instantsearch/send-media-events"},{"title":"Send events","sidebarTitle":"Events","href":"/doc/guides/sending-events/instantsearch/send-events"}]},{"group":"Send events with API clients","pages":[{"title":"Send ecommerce events","sidebarTitle":"Ecommerce events","href":"/doc/guides/sending-events/api-client/send-ecommerce-events"},{"title":"Send media events","sidebarTitle":"Media events","href":"/doc/guides/sending-events/api-client/send-media-events"},{"title":"Send events","sidebarTitle":"Events","href":"/doc/guides/sending-events/api-client/send-events"}]}]},{"group":"Connectors","pages":[{"title":"Google Tag Manager","href":"/doc/guides/sending-events/connectors/google-tag-manager"},{"title":"Segment","href":"/doc/guides/sending-events/connectors/segment"},{"title":"Tealium","href":"/doc/guides/sending-events/connectors/tealium"},{"title":"Google Analytics BigQuery Export","sidebarTitle":"GA4 BigQuery Export","href":"/doc/guides/sending-events/connectors/google-analytics-big-query-export"}]}]},{"group":"Search analytics","root":{"title":"Search analytics","sidebarTitle":"Overview","href":"/doc/guides/search-analytics/overview"},"pages":[{"group":"Concepts","pages":[{"title":"Search analytics metrics","href":"/doc/guides/search-analytics/concepts/metrics"},{"title":"Query aggregation and processing","href":"/doc/guides/search-analytics/concepts/query-aggregation"}]},{"group":"Guides","pages":[{"title":"Distinguish users for analytics","href":"/doc/guides/search-analytics/guides/usertoken"},{"title":"Exclude search queries from analytics","href":"/doc/guides/search-analytics/guides/exclude-queries"},{"title":"Segment your analytics data","href":"/doc/guides/search-analytics/guides/segments"}]}]},{"group":"Solutions","pages":[{"group":"Search","root":{"title":"Search","href":"/doc/guides/solutions/ecommerce/search"},"pages":[{"title":"Autocomplete with Federated Search","href":"/doc/guides/solutions/ecommerce/search/autocomplete/federated-search"},{"title":"Animated placeholders","href":"/doc/guides/solutions/ecommerce/search/autocomplete/animated-placeholder"},{"title":"Predictive search suggestions","href":"/doc/guides/solutions/ecommerce/search/autocomplete/predictive-search-suggestions"}]},{"group":"Browse","root":{"title":"Browse","href":"/doc/guides/solutions/ecommerce/browse"},"pages":[{"title":"Category pages","href":"/doc/guides/solutions/ecommerce/browse/tutorials/category-pages"},{"title":"Collections","href":"/doc/guides/solutions/ecommerce/browse/tutorials/collections"},{"group":"Product carousels","pages":[{"title":"Static product carousels","href":"/doc/guides/solutions/ecommerce/browse/product-carousels/static-product-carousels"},{"title":"Dynamic product carousels","href":"/doc/guides/solutions/ecommerce/browse/product-carousels/dynamic-product-carousels"}]}]},{"group":"Filtering and Navigation","root":{"title":"Filtering and Navigation","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation"},"pages":[{"title":"Show automatically applied filters","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation/tutorials/auto-selected-facets"},{"title":"Visual facets","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation/tutorials/visual-facets"},{"title":"Guided search","href":"/doc/guides/solutions/ecommerce/filtering-and-navigation/tutorials/guided-search"}]},{"group":"B2B catalog management","root":{"title":"B2B catalog management","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management"},"pages":[{"title":"Search by SKU","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management/tutorials/search-by-sku"},{"title":"Personalized catalogs","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management/tutorials/personalized-catalogs"},{"title":"Personalized pricing","href":"/doc/guides/solutions/ecommerce/b2b-catalog-management/tutorials/personalized-pricing"}]},{"group":"Visual image search","root":{"title":"Visual image search","sidebarTitle":"Overview","href":"/doc/guides/solutions/ecommerce/visual-image-search"},"pages":[{"title":"Image classification and tagging","href":"/doc/guides/solutions/ecommerce/visual-image-search/tutorials/image-classification-tagging"},{"title":"Search by image","href":"/doc/guides/solutions/ecommerce/visual-image-search/tutorials/search-by-image"}]},{"title":"Build a voice to text search","description":"High-level overview over how to build a voice-to-text search with Algolia.","href":"/doc/guides/solutions/ecommerce/voice-search"}]}]},{"group":"Optimization and Personalization","icon":"cpu","pages":[{"group":"Algolia Recommend","root":{"title":"Algolia Recommend","sidebarTitle":"Overview","href":"/doc/guides/algolia-recommend/overview"},"pages":[{"group":"Upgrade","pages":[{"title":"Upgrade from Recommend JS to InstantSearch.js","sidebarTitle":"From Recommend JS","description":"The Recommend widgets are part of InstantSearch.js. Learn how you can upgrade from Recommend JS.","href":"/doc/guides/algolia-recommend/upgrade/recommend-js"},{"title":"Upgrade from Recommend React to React InstantSearch","sidebarTitle":"From Recommend React","description":"The Recommend widgets are part of React InstantSearch. Learn how you can upgrade from Recommend React.","href":"/doc/guides/algolia-recommend/upgrade/recommend-react"}]},{"group":"Guides","pages":[{"title":"Upload events from a CSV file","sidebarTitle":"Upload from CSV","description":"Learn how you can upload historical user events to Algolia Recommend to get started quicker.","href":"/doc/guides/algolia-recommend/how-to/csv-upload"},{"title":"Set up Algolia Recommend","description":"Learn how to set up Algolia Recommend.","sidebarTitle":"Set up Recommend","href":"/doc/guides/algolia-recommend/how-to/set-up"},{"title":"Get image-based recommendations with Looking similar","description":"Retrieve related items based on images with the Recommend Looking similar model.","href":"/doc/guides/algolia-recommend/how-to/lookingSimilar"},{"title":"Recommended for you","description":"Surface items personalized to your users.","href":"/doc/guides/algolia-recommend/how-to/recommended-for-you"},{"title":"Personalized recommendations","description":"Personalize recommendations for your users.","href":"/doc/guides/algolia-recommend/how-to/personalized-recommendations"},{"title":"Refine recommendations with rules","sidebarTitle":"Recommend rules","description":"Rules let you refine and curate your recommendations.","href":"/doc/guides/algolia-recommend/how-to/rules"},{"title":"Deduplicate recommendations","description":"Remove variants from your recommendations by using Recommend deduplication.","href":"/doc/guides/algolia-recommend/how-to/deduplication"}]},{"group":"Analytics","pages":[{"title":"Recommend analytics","sidebarTitle":"Overview","description":"Understand how your users interact with your recommendations using Recommend analytics in the Algolia dashboard.","href":"/doc/guides/algolia-recommend/analytics/recommend-analytics"},{"title":"Recommend analytics metrics","sidebarTitle":"Metrics","description":"Reference for the Recommend analytics metrics in the Algolia dashboard, from total users and click-through rate to revenue and click position.","href":"/doc/guides/algolia-recommend/analytics/metrics"},{"title":"Send events for Recommend analytics","description":"Learn which parameters to include in Recommend requests to attribute click and conversion events.","sidebarTitle":"Send events","href":"/doc/guides/algolia-recommend/analytics/send-events"}]}]},{"group":"Personalization","pages":[{"group":"Advanced Personalization","pages":[{"group":"What is Advanced Personalization","root":{"title":"What is Advanced Personalization?","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization"},"pages":[{"title":"How does Advanced Personalization work?","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/in-depth/how-does-advanced-personalization-work"},{"title":"Real-time personalization and historical personalization","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/in-depth/real-time-personalization-and-historical-personalization"},{"title":"Migrate from Classic Personalization","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/in-depth/migrate-from-classic-personalization"},{"title":"User profiles","href":"/doc/guides/personalization/advanced-personalization/what-is-advanced-personalization/concepts/user-profiles"}]},{"group":"Configure personalization","root":{"title":"Configure personalization","href":"/doc/guides/personalization/advanced-personalization/configure"},"pages":[{"group":"Prerequisites","pages":[{"title":"Prepare your index structure","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/index-structure"},{"title":"Prepare your event implementation","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/event-implementation"},{"title":"Prepare your search implementation","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/search-implementation"},{"title":"Requirements and limits","href":"/doc/guides/personalization/advanced-personalization/configure/prerequisites/consider-requirements-limits"}]},{"group":"Setup","pages":[{"title":"Configure indices to personalize","href":"/doc/guides/personalization/advanced-personalization/configure/setup/indices"},{"title":"Configure user events","href":"/doc/guides/personalization/advanced-personalization/configure/setup/events"},{"title":"Set personalization re-ranking","href":"/doc/guides/personalization/advanced-personalization/configure/setup/personalization-reranking"},{"title":"Enable real-time personalization","href":"/doc/guides/personalization/advanced-personalization/configure/setup/enable-real-time-personalization"}]}]},{"group":"Monitor personalization","root":{"title":"Monitor personalization","href":"/doc/guides/personalization/advanced-personalization/monitor"},"pages":[{"title":"A/B test Advanced Personalization","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/ab-test"},{"title":"Troubleshoot Advanced Personalization","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/troubleshoot"},{"title":"Inspect a user profile","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/inspect-a-user-profile"},{"title":"Delete user profiles","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/delete-a-user-profile"},{"title":"Error codes","href":"/doc/guides/personalization/advanced-personalization/monitor/in-depth/error-codes"}]},{"group":"Implement personalization","root":{"title":"Implement personalization","href":"/doc/guides/personalization/advanced-personalization/implement"},"pages":[{"title":"Segment users with rule contexts","href":"/doc/guides/personalization/advanced-personalization/implement/guides/segment-users-with-rule-contexts"},{"title":"Applying contextual affinities","href":"/doc/guides/personalization/advanced-personalization/implement/guides/applying-contextual-affinities"},{"title":"Fetching a user profile","href":"/doc/guides/personalization/advanced-personalization/implement/guides/fetching-a-user-profile"},{"title":"Personalizing search facets","href":"/doc/guides/personalization/advanced-personalization/implement/guides/personalizing-search-facets"},{"title":"Display content with inline segmentation","href":"/doc/guides/personalization/advanced-personalization/implement/guides/inline-segmentation"},{"title":"Label and boost purchased items in search results","href":"/doc/guides/personalization/advanced-personalization/implement/guides/label-and-boost-purchased-items"},{"title":"Personalize product display","href":"/doc/guides/personalization/advanced-personalization/implement/guides/personalizing-product-display"},{"title":"Export user profiles to an audience","href":"/doc/guides/personalization/advanced-personalization/implement/guides/export-audience"}]}]},{"group":"Classic Personalization","pages":[{"group":"What is Personalization","root":{"title":"What is Personalization?","href":"/doc/guides/personalization/classic-personalization/what-is-personalization"},"pages":[{"title":"How Personalization works","href":"/doc/guides/personalization/classic-personalization/what-is-personalization/in-depth/how-personalization-works"}]},{"group":"Personalize results","pages":[{"title":"Personalizing results","href":"/doc/guides/personalization/classic-personalization/personalizing-results"},{"title":"Configure Personalization","href":"/doc/guides/personalization/classic-personalization/personalizing-results/in-depth/configuring-personalization"}]},{"group":"Going to production","root":{"title":"Going to production","href":"/doc/guides/personalization/classic-personalization/going-to-production"},"pages":[{"title":"A/B testing Personalization","href":"/doc/guides/personalization/classic-personalization/going-to-production/how-to/ab-testing-personalization"},{"title":"Enabling Personalization","href":"/doc/guides/personalization/classic-personalization/going-to-production/how-to/enabling-personalization"},{"title":"Personalization implementation checklist","href":"/doc/guides/personalization/classic-personalization/going-to-production/in-depth/implementation-checklist"}]}]}]},{"group":"A/B testing","pages":[{"group":"What is A/B testing","root":{"title":"What is A/B testing","href":"/doc/guides/ab-testing/what-is-ab-testing"},"pages":[{"title":"Create and run an A/B test","href":"/doc/guides/ab-testing/what-is-ab-testing/how-to/create-and-run-an-ab-test"},{"title":"A/B testing API version 3","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/api-version-3"},{"title":"Why do A/B testing?","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/why-do-ab-testing"},{"title":"How A/B test scores are calculated","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/how-ab-test-scores-are-calculated"},{"title":"Bayesian experimentation","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/bayesian-experimentation"},{"title":"How traffic splits affect A/B test results","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/how-traffic-splits-affect-results"},{"title":"Multi-variant testing","href":"/doc/guides/ab-testing/what-is-ab-testing/in-depth/multi-variant-testing"},{"title":"Declare and adopt an A/B test winner","href":"/doc/guides/ab-testing/what-is-ab-testing/how-to/adopt-ab-test-winner"}]},{"title":"A/B test implementation checklist","href":"/doc/guides/ab-testing/ab-test-implementation-checklist"},{"title":"How to read your A/B test results","href":"/doc/guides/ab-testing/how-to-read-your-a-b-test-results"}]}]},{"group":"AI-powered experiences","icon":"brain","pages":[{"group":"AI Guides","root":{"title":"AI guides","href":"/doc/guides/algolia-ai/generative-experiences"},"pages":[{"group":"How to","pages":[{"title":"Create Guides","href":"/doc/guides/algolia-ai/generative-experiences/guides/generating-guides"},{"title":"Integrate Guides into your website","sidebarTitle":"Integrate Guides","href":"/doc/guides/algolia-ai/generative-experiences/guides/using-guides"},{"title":"Publish Guides","href":"/doc/guides/algolia-ai/generative-experiences/guides/publishing-guides"}]},{"group":"UI components","pages":[{"title":"GuidesHeadlines","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/headlines"},{"title":"GuideContent","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/content"},{"title":"GuidesFeedback","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/feedback"},{"title":"Alternative implementations","href":"/doc/guides/algolia-ai/generative-experiences/ui-library/alternatives"}]}]},{"group":"Agent Studio","root":{"title":"Agent Studio","sidebarTitle":"Overview","href":"/doc/guides/algolia-ai/agent-studio"},"pages":[{"group":"Get started","root":{"title":"Build your first agent","href":"/doc/guides/algolia-ai/agent-studio/how-to/quickstart"},"pages":[{"title":"Create and edit agents in the dashboard","sidebarTitle":"Dashboard","href":"/doc/guides/algolia-ai/agent-studio/how-to/dashboard"},{"title":"Connect LLM providers","sidebarTitle":"LLM providers","href":"/doc/guides/algolia-ai/agent-studio/how-to/llm-providers"},{"title":"Integrate Agent Studio","href":"/doc/guides/algolia-ai/agent-studio/how-to/integration"}]},{"group":"Extend","root":{"title":"Use tools in Agent Studio","sidebarTitle":"Tools overview","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/overview"},"pages":[{"title":"Algolia Search tool","sidebarTitle":"Search tool","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/algolia-search"},{"title":"Grouped Results tool","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/grouped-results"},{"title":"Client-side tools","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/client-side-tools"},{"title":"MCP tools","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/mcp-tools"},{"title":"Memory","href":"/doc/guides/algolia-ai/agent-studio/how-to/memory/overview"},{"title":"Agent-to-agent (A2A)","href":"/doc/guides/algolia-ai/agent-studio/how-to/agent-to-agent"}]},{"group":"Customize","pages":[{"title":"Tips for writing efficient prompts","sidebarTitle":"Prompting","href":"/doc/guides/algolia-ai/agent-studio/how-to/prompting"},{"title":"Generate prompt suggestions for your pages","sidebarTitle":"Prompt suggestions","href":"/doc/guides/algolia-ai/agent-studio/how-to/prompt-suggestions"},{"title":"Generate searchable prompt suggestions","sidebarTitle":"Searchable prompt suggestions","href":"/doc/guides/algolia-ai/agent-studio/how-to/searchable-prompt-suggestions"},{"title":"Compare products in chat","sidebarTitle":"Product comparison","href":"/doc/guides/algolia-ai/agent-studio/how-to/product-comparison"},{"title":"Add an AI Overview card to search results","sidebarTitle":"Result card","href":"/doc/guides/algolia-ai/agent-studio/how-to/result-card"},{"title":"Conversations","href":"/doc/guides/algolia-ai/agent-studio/how-to/conversations"},{"title":"Shrink long conversations","sidebarTitle":"Context management","href":"/doc/guides/algolia-ai/agent-studio/how-to/context-management"},{"title":"Per-turn context","href":"/doc/guides/algolia-ai/agent-studio/how-to/turn-context"},{"title":"Cache agent responses","sidebarTitle":"Caching","href":"/doc/guides/algolia-ai/agent-studio/how-to/caching"},{"title":"Analytics","href":"/doc/guides/algolia-ai/agent-studio/how-to/analytics"},{"title":"Evaluations","href":"/doc/guides/algolia-ai/agent-studio/how-to/evaluations"},{"title":"Collect feedback on agent messages","sidebarTitle":"Collecting feedback","href":"/doc/guides/algolia-ai/agent-studio/how-to/feedback"},{"title":"Experimental features","href":"/doc/guides/algolia-ai/agent-studio/how-to/experimental-features"},{"title":"Search prefetch","href":"/doc/guides/algolia-ai/agent-studio/how-to/search-prefetch"}]},{"group":"Security","pages":[{"title":"User authentication","href":"/doc/guides/algolia-ai/agent-studio/how-to/user-authentication"},{"title":"Approved domains","href":"/doc/guides/algolia-ai/agent-studio/how-to/approved-domains"},{"title":"Guardrails","sidebarTitle":"Guardrails","href":"/doc/guides/algolia-ai/agent-studio/how-to/guardrails"},{"title":"Security and credentials","href":"/doc/guides/algolia-ai/agent-studio/how-to/tools/security"}]},{"group":"Reference","pages":[{"title":"Configure your agents and app","sidebarTitle":"Configuration","href":"/doc/guides/algolia-ai/agent-studio/how-to/agent-configuration"}]}]},{"group":"Model Context Protocol","root":{"title":"MCP Server (Model Context Protocol)","sidebarTitle":"Overview","href":"/doc/guides/model-context-protocol"},"pages":[{"title":"Get started with Algolia Public MCP","sidebarTitle":"Public MCP","href":"/doc/guides/model-context-protocol/public-mcp"},{"title":"Get started with Algolia Productivity MCP","sidebarTitle":"Productivity MCP","href":"/doc/guides/model-context-protocol/productivity-mcp"},{"title":"Add Algolia to your app with DevEx MCP","sidebarTitle":"DevEx MCP","href":"/doc/guides/model-context-protocol/devex-mcp"}]},{"group":"Ask AI","root":{"title":"Ask AI","href":"/doc/guides/algolia-ai/askai"},"pages":[{"title":"Migrate Ask AI to Agent Studio","href":"/doc/guides/algolia-ai/askai/guides/migrate-to-agent-studio"},{"title":"Enable and configure Ask AI","href":"/doc/guides/algolia-ai/askai/guides/setup"},{"title":"Supported LLMs","mode":"wide","href":"/doc/guides/algolia-ai/askai/guides/models"},{"title":"Markdown indexing","href":"/doc/guides/algolia-ai/askai/guides/markdown-indexing"},{"title":"Suggested questions","href":"/doc/guides/algolia-ai/askai/guides/suggested-questions"},{"title":"Measure Ask AI performance","href":"/doc/guides/algolia-ai/askai/guides/metrics"},{"title":"Safeguards","href":"/doc/guides/algolia-ai/askai/guides/safety"},{"title":"Reduce token usage","href":"/doc/guides/algolia-ai/askai/guides/cost-optimization"},{"title":"Ask AI API reference","href":"/doc/guides/algolia-ai/askai/reference/api"}]}]},{"group":"Production and scale","icon":"layers","pages":[{"group":"Going to production","pages":[{"title":"Implementation checklist","href":"/doc/guides/going-to-production/implementation-checklist"},{"title":"Track usage and performance in the dashboard","href":"/doc/guides/going-to-production/track-usage"},{"title":"Case study for an online clothing company","href":"/doc/guides/going-to-production/case-study"}]},{"group":"Scaling","pages":[{"group":"Infrastructure","root":{"title":"Infrastructure","sidebarTitle":"Overview","href":"/doc/guides/scaling/infrastructure"},"pages":[{"group":"Classic","pages":[{"title":"Servers and clusters","href":"/doc/guides/scaling/infrastructure/classic/servers-clusters"},{"title":"Distributed Search Network (DSN)","href":"/doc/guides/scaling/infrastructure/classic/distributed-search-network-dsn"},{"title":"Capacity alerts","href":"/doc/guides/scaling/infrastructure/classic/capacity-alerts"}]},{"title":"Dynamic scaling infrastructure","href":"/doc/guides/scaling/infrastructure/dynamic/dynamic"}]},{"title":"Large indexing jobs","href":"/doc/guides/scaling/scaling-to-larger-datasets"},{"title":"Algolia service limits","href":"/doc/guides/scaling/algolia-service-limits"},{"group":" ","hidden":true,"searchable":true,"pages":[{"title":"Multi-cluster management (MCM)","href":"/doc/guides/scaling/managing-multiple-clusters-mcm"},{"title":"Implementing MCM","href":"/doc/guides/scaling/managing-multiple-clusters-mcm/how-to/implement-multi-clusters"}]}]},{"group":"Security","pages":[{"group":"API keys","root":{"title":"API keys","sidebarTitle":"Overview","href":"/doc/guides/security/api-keys"},"pages":[{"title":"User-restricted access to data","href":"/doc/guides/security/api-keys/how-to/user-restricted-access-to-data"},{"title":"How to restore an API key","href":"/doc/guides/security/api-keys/how-to/how-to-restore-an-api-key"},{"title":"API key restrictions","href":"/doc/guides/security/api-keys/in-depth/api-key-restrictions"}]},{"title":"Security best practices","href":"/doc/guides/security/security-best-practices"},{"title":"Shared responsibility","href":"/doc/guides/security/security-best-practices/in-depth/shared-responsibility"},{"title":"Algolia Vault","href":"/doc/guides/security/algolia-vault"}]},{"group":"Value Engineering","root":{"title":"Value Engineering","href":"/doc/value-engineering"},"pages":[{"title":"Radar","href":"/doc/value-engineering/radar"},{"title":"Deploy Radar","href":"/doc/value-engineering/deploy"},{"title":"Radar data and privacy","sidebarTitle":"Data and privacy","href":"/doc/value-engineering/data-and-privacy"}]},{"title":"Set up Algolia through the AWS Marketplace","sidebarTitle":"AWS Marketplace","href":"/doc/guides/billing/marketplaces/amazon-web-services"}]}]},{"tab":"Libraries and tools","icon":"wrench","menu":[{"item":"API clients","versions":[{"version":"current","groups":[{"group":"current","pages":[{"title":"current","href":"/doc/libraries/sdk"}]}]},{"version":"legacy","groups":[{"group":"legacy","pages":[{"title":"legacy","href":"/doc/libraries/sdk/v1/install"}]}]}]},{"item":"Algolia CLI","pages":[{"title":"Algolia CLI","href":"/doc/tools/cli/get-started"}]},{"item":"Algolia Wizard","pages":[{"title":"Algolia Wizard","href":"/doc/tools/algolia-wizard"}]},{"item":"Crawler","pages":[{"title":"Crawler","href":"/doc/tools/crawler/getting-started/overview"}]},{"item":"Django","pages":[{"title":"Django","href":"/doc/framework-integration/django/setup"}]},{"item":"Laravel","pages":[{"title":"Laravel","href":"/doc/framework-integration/laravel/getting-started/introduction-to-scout-extended"}]},{"item":"Ruby on Rails","pages":[{"title":"Ruby on Rails","href":"/doc/framework-integration/rails/getting-started/setup"}]},{"item":"Symfony","pages":[{"title":"Symfony","href":"/doc/framework-integration/symfony/getting-started/algolia-searchbundle"}]},{"item":"All libraries and tools","pages":[{"title":"All libraries and tools","href":"/doc/libraries"}]}],"pages":[{"title":"Libraries and tools","href":"/doc/libraries/sdk"}]},{"tab":"UI libraries","icon":"proportions","menu":[{"item":"InstantSearch.js","pages":[{"title":"InstantSearch.js","href":"/doc/api-reference/widgets/js"}]},{"item":"React InstantSearch","pages":[{"title":"React InstantSearch","href":"/doc/api-reference/widgets/react"}]},{"item":"Vue InstantSearch","pages":[{"title":"Vue InstantSearch","href":"/doc/api-reference/widgets/vue"}]},{"item":"InstantSearch iOS","pages":[{"title":"InstantSearch iOS","href":"/doc/api-reference/widgets/ios"}]},{"item":"InstantSearch Android","pages":[{"title":"InstantSearch Android","href":"/doc/api-reference/widgets/android"}]},{"item":"Algolia for Flutter","pages":[{"title":"Algolia for Flutter","href":"/doc/api-reference/widgets/flutter"}]},{"item":"Autocomplete","pages":[{"title":"Autocomplete","href":"/doc/ui-libraries/autocomplete/introduction/what-is-autocomplete"}]},{"item":"All UI libraries","pages":[{"title":"All UI libraries","href":"/doc/ui-libraries"}]}],"pages":[{"title":"UI libraries","href":"/doc/api-reference/widgets/js"}]},{"tab":"Integrations","icon":"plug","menu":[{"item":"Adobe Commerce/Magento","pages":[{"title":"Adobe Commerce/Magento","href":"/doc/integration/magento-2/getting-started/quick-start"}]},{"item":"BigCommerce","pages":[{"title":"BigCommerce","href":"/doc/integration/bigcommerce/get-started/installation"}]},{"item":"commercetools","pages":[{"title":"commercetools","href":"/doc/integration/commercetools/get-started/installation"}]},{"item":"Make","pages":[{"title":"Make","href":"/doc/integration/make"}]},{"item":"n8n","pages":[{"title":"n8n","href":"/doc/integration/n8n"}]},{"item":"Salesforce B2C Commerce","pages":[{"title":"Salesforce B2C Commerce","href":"/doc/integration/salesforce-commerce-cloud-b2c/getting-started/introduction"}]},{"item":"Shopify","pages":[{"title":"Shopify","href":"/doc/integration/shopify/getting-started/quick-start"}]},{"item":"Stripe Projects","pages":[{"title":"Stripe Projects","href":"/doc/integration/stripe-projects"}]},{"item":"Zapier","pages":[{"title":"Zapier","href":"/doc/integration/zapier"}]},{"item":"Zendesk","pages":[{"title":"Zendesk","href":"/doc/integration/zendesk/get-started"}]},{"item":"Vercel","pages":[{"title":"Vercel","href":"/doc/integration/vercel"}]},{"item":"All integrations","pages":[{"title":"All integrations","href":"/doc/integration"}]}],"pages":[{"title":"Integrations","href":"/doc/integration/magento-2/getting-started/quick-start"}]},{"tab":"API reference","icon":"code","menu":[{"item":"Search","pages":[{"title":"Search","href":"/doc/rest-api/search"}]},{"item":"Agent Studio","pages":[{"title":"Agent Studio","href":"/doc/rest-api/agent-studio"}]},{"item":"A/B testing","pages":[{"title":"A/B testing","href":"/doc/rest-api/abtesting-v3"}]},{"item":"Advanced Personalization","pages":[{"title":"Advanced Personalization","href":"/doc/rest-api/advanced-personalization"}]},{"item":"Analytics","pages":[{"title":"Analytics","href":"/doc/rest-api/analytics"}]},{"item":"Classic Personalization","pages":[{"title":"Classic Personalization","href":"/doc/rest-api/personalization"}]},{"item":"Composition","pages":[{"title":"Composition","href":"/doc/rest-api/composition"}]},{"item":"Crawler","pages":[{"title":"Crawler","href":"/doc/rest-api/crawler"}]},{"item":"Ingestion","pages":[{"title":"Ingestion","href":"/doc/rest-api/ingestion"}]},{"item":"Insights","pages":[{"title":"Insights","href":"/doc/rest-api/insights"}]},{"item":"Monitoring","pages":[{"title":"Monitoring","href":"/doc/rest-api/monitoring"}]},{"item":"Recommend","pages":[{"title":"Recommend","href":"/doc/rest-api/recommend"}]},{"item":"Query Suggestions","pages":[{"title":"Query Suggestions","href":"/doc/rest-api/query-suggestions"}]},{"item":"Usage","pages":[{"title":"Usage","href":"/doc/rest-api/usage"}]},{"item":"All APIs","pages":[{"title":"All APIs","href":"/doc/rest-api"}]}],"pages":[{"title":"API reference","href":"/doc/rest-api/search"}]}]},"basePath":"","title":"Algolia Recommend - Algolia","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}