[{"data":1,"prerenderedAt":967},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fsearch\u002Fsynonyms":319,"docs-\u002Fdocs\u002Fsearch\u002Fsynonyms-surround":964},[4],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Docs","\u002Fdocs","docs",[9,35,60,78,120,186,229,240,264,289],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":34},"Getting started","What Zaproo Search is, a quickstart, and wiring search into a storefront.","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[16,22,28],{"title":17,"path":18,"stem":19,"description":20,"icon":21},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction","What Zaproo Search is, the five things you work with, and how a product catalog becomes a search box on your shop.","i-lucide-book-open-text",{"title":23,"path":24,"stem":25,"description":26,"icon":27},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F2.quickstart","From a new account to a first search request in six steps, with curl or from your AI agent.","i-lucide-zap",{"title":29,"path":30,"stem":31,"description":32,"icon":33},"Integrate a storefront","\u002Fdocs\u002Fgetting-started\u002Fstorefront","docs\u002F1.getting-started\u002F3.storefront","Build a search results page with facets and an autocomplete box on top of the search and suggest routes.","i-lucide-store",false,{"title":36,"description":37,"icon":38,"path":39,"stem":40,"children":41,"page":34},"Account and team","Sign-in, sessions, organizations, members, roles and projects.","i-lucide-users","\u002Fdocs\u002Faccount","docs\u002F2.account",[42,48,54],{"title":43,"path":44,"stem":45,"description":46,"icon":47},"Account and sign-in","\u002Fdocs\u002Faccount\u002Fsign-in","docs\u002F2.account\u002F1.sign-in","Create an account, verify your email, stay signed in, manage signed-in devices and change or reset your password.","i-lucide-log-in",{"title":49,"path":50,"stem":51,"description":52,"icon":53},"Organizations, members and roles","\u002Fdocs\u002Faccount\u002Forganizations","docs\u002F2.account\u002F2.organizations","What an organization holds, how to add members, and what owners, admins and members may do.","i-lucide-building-2",{"title":55,"path":56,"stem":57,"description":58,"icon":59},"Projects","\u002Fdocs\u002Faccount\u002Fprojects","docs\u002F2.account\u002F3.projects","Group the indices and API keys of one shop or one environment, and keep staging apart from production.","i-lucide-folder-kanban",{"title":61,"description":62,"icon":63,"path":64,"stem":65,"children":66,"page":34},"API keys and security","Secret and public keys, scopes, allowed origins, rate limits and errors.","i-lucide-key-round","\u002Fdocs\u002Fkeys","docs\u002F3.keys",[67,72],{"title":68,"path":69,"stem":70,"description":71,"icon":63},"API keys","\u002Fdocs\u002Fkeys\u002Fapi-keys","docs\u002F3.keys\u002F1.api-keys","Secret and public keys, full and read access, index scope, allowed origins, expiry, and how to revoke a key.",{"title":73,"path":74,"stem":75,"description":76,"icon":77},"Rate limits and errors","\u002Fdocs\u002Fkeys\u002Frate-limits","docs\u002F3.keys\u002F2.rate-limits","How many requests each route accepts per minute, what a 429 looks like, the error format and every error code with its HTTP status.","i-lucide-gauge",{"title":79,"description":80,"icon":81,"path":82,"stem":83,"children":84,"page":34},"Indexing","Indices, languages, mappings, documents, tasks, full catalog sync and reindexing.","i-lucide-database","\u002Fdocs\u002Findexing","docs\u002F4.indexing",[85,90,96,102,108,114],{"title":86,"path":87,"stem":88,"description":89,"icon":81},"Indices and languages","\u002Fdocs\u002Findexing\u002Findices","docs\u002F4.indexing\u002F1.indices","Create an index, pick its language, read its status, and change the language later with a reindex.",{"title":91,"path":92,"stem":93,"description":94,"icon":95},"Mapping and fields","\u002Fdocs\u002Findexing\u002Fmapping","docs\u002F4.indexing\u002F2.mapping","Field types, the five flags that decide what a field is used for, text analysis options, unmapped fields, and which changes need a reindex.","i-lucide-table-properties",{"title":97,"path":98,"stem":99,"description":100,"icon":101},"Documents and tasks","\u002Fdocs\u002Findexing\u002Fdocuments","docs\u002F4.indexing\u002F3.documents","Upload and delete documents in batches, follow each write as a task, retry safely with Idempotency-Key, and browse what the index holds.","i-lucide-file-json",{"title":103,"path":104,"stem":105,"description":106,"icon":107},"Full catalog sync","\u002Fdocs\u002Findexing\u002Ffull-sync","docs\u002F4.indexing\u002F4.full-sync","Replace the whole catalog with a replace session, so products missing from your export disappear from search, without downtime.","i-lucide-refresh-cw",{"title":109,"path":110,"stem":111,"description":112,"icon":113},"Reindex and versions","\u002Fdocs\u002Findexing\u002Fversions","docs\u002F4.indexing\u002F5.versions","Rebuild an index with its saved mapping and swap it in without downtime, follow or cancel the rebuild, and read activeVersion and buildingVersion.","i-lucide-git-compare-arrows",{"title":115,"path":116,"stem":117,"description":118,"icon":119},"Data source","\u002Fdocs\u002Findexing\u002Fdata-source","docs\u002F4.indexing\u002F6.data-source","Let Zaproo download your product feed on a schedule, map it to documents, write only what changed and delete what left the feed.","i-lucide-rss",{"title":121,"description":122,"icon":123,"path":124,"stem":125,"children":126,"page":34},"Integrations","Connect your shop. Magento 2, product feeds and the API work today; more platforms are coming.","i-lucide-plug-zap","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations",[127,133,139,144,150,156,161,166,171,176,181],{"title":128,"path":129,"stem":130,"description":131,"icon":132},"Integrations overview","\u002Fdocs\u002Fintegrations\u002Foverview","docs\u002F4.integrations\u002F01.overview","The ways to get your catalog into Zaproo Search, which one to pick, and how an integration shows up in the cabinet.","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"description":137,"icon":138},"Magento 2","\u002Fdocs\u002Fintegrations\u002Fmagento","docs\u002F4.integrations\u002F02.magento","Install the Zaproo Search module for Magento 2, connect each store view to its own index, and keep the catalog in sync.","i-lucide-shopping-cart",{"title":140,"path":141,"stem":142,"description":143,"icon":119},"Product feed","\u002Fdocs\u002Fintegrations\u002Fproduct-feed","docs\u002F4.integrations\u002F03.product-feed","Connect any shop that can publish its catalog as a feed. Zaproo downloads it on a schedule and writes only what changed.",{"title":145,"path":146,"stem":147,"description":148,"icon":149},"REST API and MCP","\u002Fdocs\u002Fintegrations\u002Frest-api-and-mcp","docs\u002F4.integrations\u002F04.rest-api-and-mcp","Send documents from your own code with the REST API, or let an AI agent manage the index over MCP.","i-lucide-code",{"title":151,"path":152,"stem":153,"description":154,"icon":155},"Shopify","\u002Fdocs\u002Fintegrations\u002Fshopify","docs\u002F4.integrations\u002F05.shopify","A Zaproo Search integration for Shopify is coming soon. Until then, connect the shop through a product feed or the REST API.","i-lucide-shopping-bag",{"title":157,"path":158,"stem":159,"description":160,"icon":155},"WooCommerce","\u002Fdocs\u002Fintegrations\u002Fwoocommerce","docs\u002F4.integrations\u002F06.woocommerce","A Zaproo Search integration for WooCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":162,"path":163,"stem":164,"description":165,"icon":155},"Shopware","\u002Fdocs\u002Fintegrations\u002Fshopware","docs\u002F4.integrations\u002F07.shopware","A Zaproo Search integration for Shopware is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":167,"path":168,"stem":169,"description":170,"icon":155},"BigCommerce","\u002Fdocs\u002Fintegrations\u002Fbigcommerce","docs\u002F4.integrations\u002F08.bigcommerce","A Zaproo Search integration for BigCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":172,"path":173,"stem":174,"description":175,"icon":155},"PrestaShop","\u002Fdocs\u002Fintegrations\u002Fprestashop","docs\u002F4.integrations\u002F09.prestashop","A Zaproo Search integration for PrestaShop is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":177,"path":178,"stem":179,"description":180,"icon":155},"commercetools","\u002Fdocs\u002Fintegrations\u002Fcommercetools","docs\u002F4.integrations\u002F10.commercetools","A Zaproo Search integration for commercetools is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":182,"path":183,"stem":184,"description":185,"icon":155},"Salesforce Commerce Cloud","\u002Fdocs\u002Fintegrations\u002Fsalesforce-commerce-cloud","docs\u002F4.integrations\u002F11.salesforce-commerce-cloud","A Zaproo Search integration for Salesforce Commerce Cloud is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":187,"description":188,"icon":189,"path":190,"stem":191,"children":192,"page":34},"Search and relevance","The search API, search profiles, facets, synonyms and ranking rules.","i-lucide-search","\u002Fdocs\u002Fsearch","docs\u002F5.search",[193,199,205,211,217,223],{"title":194,"path":195,"stem":196,"description":197,"icon":198},"Search API","\u002Fdocs\u002Fsearch\u002Fsearch-api","docs\u002F5.search\u002F1.search-api","The search request and response, every filter form, sorting, paging, highlighting and the inline profile for previews.","i-lucide-search-code",{"title":200,"path":201,"stem":202,"description":203,"icon":204},"Search profiles","\u002Fdocs\u002Fsearch\u002Fprofiles","docs\u002F5.search\u002F2.profiles","Every setting of a search profile, what it does to results, and the mistakes to avoid.","i-lucide-sliders-horizontal",{"title":206,"path":207,"stem":208,"description":209,"icon":210},"Facets","\u002Fdocs\u002Fsearch\u002Ffacets","docs\u002F5.search\u002F3.facets","The filter panels next to the results, the four facet types, index facets and profile facets, and how a shopper's clicks change the counts.","i-lucide-list-filter",{"title":212,"path":213,"stem":214,"description":215,"icon":216},"Synonyms","\u002Fdocs\u002Fsearch\u002Fsynonyms","docs\u002F5.search\u002F4.synonyms","Let different words find the same products, with equivalent and one-way rules, bulk import and export in the Solr format, and no reindex.","i-lucide-arrow-left-right",{"title":218,"path":219,"stem":220,"description":221,"icon":222},"Ranking rules","\u002Fdocs\u002Fsearch\u002Frules","docs\u002F5.search\u002F5.rules","Change the results for chosen searches. Put products first, hide them, lift or lower a brand, narrow the results or weigh fields differently, on a schedule and per profile.","i-lucide-list-ordered",{"title":224,"path":225,"stem":226,"description":227,"icon":228},"Language groups","\u002Fdocs\u002Fsearch\u002Flanguage-groups","docs\u002F5.search\u002F6.language-groups","Let each store of a multilingual shop find its products by the other stores' text, so an English search on the Estonian store still finds the Estonian product.","i-lucide-languages",{"title":230,"description":231,"icon":232,"path":233,"stem":234,"children":235,"page":34},"Autocomplete","Query suggestions as the shopper types.","i-lucide-text-cursor-input","\u002Fdocs\u002Fautocomplete","docs\u002F6.autocomplete",[236],{"title":230,"path":237,"stem":238,"description":239,"icon":232},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions","docs\u002F6.autocomplete\u002F1.suggestions","Query suggestions as the shopper types, built every hour from your own searches, field values and custom entries.",{"title":241,"description":242,"icon":243,"path":244,"stem":245,"children":246,"page":34},"Analytics","Searches, zero-result queries and latency.","i-lucide-chart-line","\u002Fdocs\u002Fanalytics","docs\u002F7.analytics",[247,252,258],{"title":248,"path":249,"stem":250,"description":251,"icon":243},"Search analytics","\u002Fdocs\u002Fanalytics\u002Fsearch-analytics","docs\u002F7.analytics\u002F1.search-analytics","What the analytics page counts, which traffic it leaves out, how the headline numbers are defined, how comparisons and retention work, and how to get the weekly digest.",{"title":253,"path":254,"stem":255,"description":256,"icon":257},"Reports","\u002Fdocs\u002Fanalytics\u002Freports","docs\u002F7.analytics\u002F2.reports","Every analytics report with the definition of each column, the opportunities list and its fix buttons, the per-query view with before and after, and the CSV download.","i-lucide-table",{"title":259,"path":260,"stem":261,"description":262,"icon":263},"Event tracking","\u002Fdocs\u002Fanalytics\u002Fevent-tracking","docs\u002F7.analytics\u002F3.event-tracking","Send clicks, add-to-cart, purchases and suggestion clicks from your storefront, tie them to the search with searchId, and a copy-paste script that does it.","i-lucide-mouse-pointer-click",{"title":265,"description":266,"icon":267,"path":268,"stem":269,"children":270,"page":34},"AI agents (MCP)","Connect Claude Code or any MCP client and manage search from an agent.","i-lucide-bot","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",[271,277,283],{"title":272,"path":273,"stem":274,"description":275,"icon":276},"MCP setup","\u002Fdocs\u002Fmcp\u002Fsetup","docs\u002F8.mcp\u002F1.setup","Connect Claude Code or any MCP client to Zaproo Search and manage indices, documents, profiles, synonyms and ranking rules from your agent.","i-lucide-plug",{"title":278,"path":279,"stem":280,"description":281,"icon":282},"MCP tools","\u002Fdocs\u002Fmcp\u002Ftools","docs\u002F8.mcp\u002F2.tools","Every tool the Zaproo Search MCP server offers, what an agent can do with each group, and prompts to start from.","i-lucide-wrench",{"title":284,"path":285,"stem":286,"description":287,"icon":288},"Resources and prompts","\u002Fdocs\u002Fmcp\u002Fresources","docs\u002F8.mcp\u002F3.resources","The index resources an MCP client can read, the tune_relevance prompt, and the errors the MCP server answers.","i-lucide-library",{"title":290,"description":291,"icon":292,"path":293,"stem":294,"children":295,"page":34},"Reference","Every REST route, every limit, plans and billing, and status.","i-lucide-book-open","\u002Fdocs\u002Freference","docs\u002F9.reference",[296,302,307,313],{"title":297,"path":298,"stem":299,"description":300,"icon":301},"REST API","\u002Fdocs\u002Freference\u002Frest-api","docs\u002F9.reference\u002F1.rest-api","The routes of the Zaproo Search REST API, grouped by area, with who may call it.","i-lucide-list-tree",{"title":303,"path":304,"stem":305,"description":306,"icon":77},"Limits","\u002Fdocs\u002Freference\u002Flimits","docs\u002F9.reference\u002F2.limits","Every size limit, cap and default of the Zaproo Search API in one place, with what happens when you reach it.",{"title":308,"path":309,"stem":310,"description":311,"icon":312},"Plans and billing","\u002Fdocs\u002Freference\u002Fbilling","docs\u002F9.reference\u002F3.billing","The plans, how usage is measured, what happens near a quota, and how plan changes and invoices work.","i-lucide-credit-card",{"title":314,"path":315,"stem":316,"description":317,"icon":318},"Status","\u002Fdocs\u002Freference\u002Fstatus","docs\u002F9.reference\u002F4.status","The status page and the status route, what each service covers and how to use them in your own monitoring.","i-lucide-activity",{"id":320,"title":212,"body":321,"description":215,"extension":959,"meta":960,"navigation":961,"path":213,"seo":962,"stem":214,"__hash__":963},"docs\u002Fdocs\u002F5.search\u002F4.synonyms.md",{"type":322,"value":323,"toc":947},"minimark",[324,329,333,336,347,351,359,444,521,525,528,548,552,580,584,590,594,598,601,634,776,780,783,789,798,801,804,811,825,839,849,887,908,912,943],[325,326,328],"h2",{"id":327},"what-synonyms-do","What synonyms do",[330,331,332],"p",{},"Shoppers do not use your catalog's words. One types \"telly\", another \"television\", and the product title says \"TV\". A synonym rule tells the search that these words mean the same thing, so each of them finds the products.",[330,334,335],{},"Synonyms belong to an index and apply to every profile of it. They work at search time. A saved change applies from the next search on, with no reindex and no upload.",[330,337,338,339,342,343,346],{},"In the cabinet, open an index and then ",[340,341,212],"strong",{},". ",[340,344,345],{},"Add rule"," opens the form, and the table lists the rules with a search box and a filter by type.",[325,348,350],{"id":349},"rule-types","Rule types",[330,352,353],{},[354,355],"img",{"alt":356,"src":357,"title":358},"The Synonyms page with an explanation of equivalent and one way rules, a list of rules such as scotch to tape and bubble wrap with bubblewrap and air cushion, and a bulk import and export section","\u002Fdocs\u002Fscreenshots\u002Fsynonyms.png","Synonym rules of both types",[360,361,365,370,376,431],"setting",{"name":362,"type":363,"values":364},"EQUIVALENT","rule type","2 to 100 terms",[366,367,369],"h3",{"id":368},"equivalent","Equivalent",[330,371,372,373,375],{},"Every term finds all the others. A search for any term also searches for each of the other terms. In the cabinet this type is called ",[340,374,369],{},".",[377,378,383],"pre",{"className":379,"code":380,"language":381,"meta":382,"style":382},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{ \"type\": \"EQUIVALENT\", \"terms\": [\"tv\", \"television\", \"telly\"] }\n","json","",[384,385,386],"code",{"__ignoreMap":382},[387,388,391,395,399,402,406,409,412,415,418,420,423,425,428],"span",{"class":389,"line":390},"line",1,[387,392,394],{"class":393},"s7iLA","{ ",[387,396,398],{"class":397},"sb7M8","\"type\"",[387,400,401],{"class":393},": ",[387,403,405],{"class":404},"semJd","\"EQUIVALENT\"",[387,407,408],{"class":393},", ",[387,410,411],{"class":397},"\"terms\"",[387,413,414],{"class":393},": [",[387,416,417],{"class":404},"\"tv\"",[387,419,408],{"class":393},[387,421,422],{"class":404},"\"television\"",[387,424,408],{"class":393},[387,426,427],{"class":404},"\"telly\"",[387,429,430],{"class":393},"] }\n",[432,433,434],"template",{"v-slot:tips":382},[435,436,437,441],"ul",{},[438,439,440],"li",{},"Use it for true synonyms and spelling variants: \"t-shirt, tee, tshirt\".",[438,442,443],{},"Keep each rule to one meaning. A term that sits in two equivalent rules joins two groups that may not mean the same thing.",[360,445,448,452,473,511],{"name":446,"type":363,"values":447},"ONE_WAY","1 to 100 terms and 1 to 100 targets",[366,449,451],{"id":450},"one-way","One way",[330,453,454,455,457,458,461,462,465,466,461,469,472],{},"The terms also find the targets, never the reverse. In the cabinet this type is called ",[340,456,451],{},", and its fields are ",[340,459,460],{},"When shoppers search"," (",[384,463,464],{},"terms",") and ",[340,467,468],{},"Also find",[384,470,471],{},"target",").",[377,474,476],{"className":379,"code":475,"language":381,"meta":382,"style":382},"{ \"type\": \"ONE_WAY\", \"terms\": [\"iphone\"], \"target\": [\"apple phone\"] }\n",[384,477,478],{"__ignoreMap":382},[387,479,480,482,484,486,489,491,493,495,498,501,504,506,509],{"class":389,"line":390},[387,481,394],{"class":393},[387,483,398],{"class":397},[387,485,401],{"class":393},[387,487,488],{"class":404},"\"ONE_WAY\"",[387,490,408],{"class":393},[387,492,411],{"class":397},[387,494,414],{"class":393},[387,496,497],{"class":404},"\"iphone\"",[387,499,500],{"class":393},"], ",[387,502,503],{"class":397},"\"target\"",[387,505,414],{"class":393},[387,507,508],{"class":404},"\"apple phone\"",[387,510,430],{"class":393},[432,512,513],{"v-slot:tips":382},[435,514,515,518],{},[438,516,517],{},"Use it from a specific word to a broader one. \"iphone\" may show other Apple phones, but a search for \"apple phone\" should not only find iPhones.",[438,519,520],{},"It also helps with brand names people use for the whole category, such as \"jacuzzi\" to \"hot tub\".",[325,522,524],{"id":523},"how-a-search-uses-them","How a search uses them",[330,526,527],{},"The search reads the query word by word, left to right. Where words match a term of a rule, it adds a variant of the query with that term swapped for a synonym. \"cheap telly\" becomes three searches at once: \"cheap telly\", \"cheap tv\" and \"cheap television\". A product that matches any of them is a result.",[435,529,530,533,536,539,542],{},[438,531,532],{},"The words the shopper typed rank first. Variants count slightly less (0.9 against 1), so a product with the shopper's own word tends to rank above one that only has the synonym.",[438,534,535],{},"Terms can have several words, such as \"apple phone\". Where two terms overlap, the longer one wins.",[438,537,538],{},"A query gets at most 8 variants, the original included. Each variant swaps one term. A variant never swaps two terms at once.",[438,540,541],{},"Matching ignores capital letters. It does not ignore accents or punctuation: \"tv,\" with a comma does not match the term \"tv\".",[438,543,544,547],{},[545,546,218],"a",{"href":219}," see the variants too, so a rule for \"tv\" also fires for \"telly\".",[325,549,551],{"id":550},"term-rules","Term rules",[435,553,554,557,571,574],{},[438,555,556],{},"A term is 1 to 100 characters, with spaces around it trimmed.",[438,558,559,560,408,563,566,567,570],{},"A term cannot contain ",[384,561,562],{},",",[384,564,565],{},"=>"," or a line break, and cannot start with ",[384,568,569],{},"#",". Those characters are syntax in the Solr format.",[438,572,573],{},"The terms of one side must be distinct, ignoring capital letters and extra spaces.",[438,575,576,577,375],{},"An index holds up to 10,000 rules. Above that a create or an import answers ",[384,578,579],{},"409 SYNONYM_LIMIT_REACHED",[325,581,583],{"id":582},"manage-rules-over-the-api","Manage rules over the API",[585,586],"api-route",{"auth":587,"method":588,"path":589},"Project member or any secret key","GET","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms",[585,591],{"auth":592,"method":593,"path":589},"Project admin or a full-access secret key","POST",[585,595],{"auth":592,"method":596,"path":597},"PUT","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms\u002F:synonymId",[585,599],{"auth":592,"method":600,"path":597},"DELETE",[330,602,603,605,606,609,610,613,614,617,618,621,622,461,625,627,628,630,631,633],{},[384,604,588],{}," lists rules page by page. It takes ",[384,607,608],{},"limit"," (1 to 100, default 25), ",[384,611,612],{},"cursor"," (the ",[384,615,616],{},"nextCursor"," of the previous page), ",[384,619,620],{},"q"," (any part of a term or target, ignoring case) and ",[384,623,624],{},"type",[384,626,362],{}," or ",[384,629,446],{},"). ",[384,632,596],{}," replaces the rule.",[635,636,637,750],"tabs",{},[638,639,642],"tabs-item",{"icon":640,"label":641},"i-lucide-terminal","curl",[377,643,647],{"className":644,"code":645,"language":646,"meta":382,"style":382},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl -X POST https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fsynonyms \\\n  -H \"Authorization: Bearer $ZS_KEY\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"EQUIVALENT\", \"terms\": [\"tv\", \"television\", \"telly\"]}'\n\ncurl \"https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fsynonyms?q=tele&type=EQUIVALENT\" \\\n  -H \"Authorization: Bearer $ZS_KEY\"\n","bash",[384,648,649,680,703,712,719,738],{"__ignoreMap":382},[387,650,651,654,658,661,664,667,670,673,676],{"class":389,"line":390},[387,652,641],{"class":653},"szw1H",[387,655,657],{"class":656},"ssYy9"," -X",[387,659,660],{"class":404}," POST",[387,662,663],{"class":404}," https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F",[387,665,666],{"class":393},"$PROJECT_ID",[387,668,669],{"class":404},"\u002Findices\u002F",[387,671,672],{"class":393},"$INDEX_ID",[387,674,675],{"class":404},"\u002Fsynonyms",[387,677,679],{"class":678},"sklAV"," \\\n",[387,681,683,686,689,692,695,698,701],{"class":389,"line":682},2,[387,684,685],{"class":656},"  -H",[387,687,688],{"class":404}," \"Authorization: Bearer ",[387,690,691],{"class":393},"$ZS_KEY",[387,693,694],{"class":404},"\"",[387,696,697],{"class":656}," -H",[387,699,700],{"class":404}," \"Content-Type: application\u002Fjson\"",[387,702,679],{"class":678},[387,704,706,709],{"class":389,"line":705},3,[387,707,708],{"class":656},"  -d",[387,710,711],{"class":404}," '{\"type\": \"EQUIVALENT\", \"terms\": [\"tv\", \"television\", \"telly\"]}'\n",[387,713,715],{"class":389,"line":714},4,[387,716,718],{"emptyLinePlaceholder":717},true,"\n",[387,720,722,724,727,729,731,733,736],{"class":389,"line":721},5,[387,723,641],{"class":653},[387,725,726],{"class":404}," \"https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F",[387,728,666],{"class":393},[387,730,669],{"class":404},[387,732,672],{"class":393},[387,734,735],{"class":404},"\u002Fsynonyms?q=tele&type=EQUIVALENT\"",[387,737,679],{"class":678},[387,739,741,743,745,747],{"class":389,"line":740},6,[387,742,685],{"class":656},[387,744,688],{"class":404},[387,746,691],{"class":393},[387,748,749],{"class":404},"\"\n",[638,751,753,761],{"icon":267,"label":752},"MCP",[377,754,759],{"className":755,"code":757,"language":758,"meta":382},[756],"language-text","Add synonyms to the products index: tv, television and telly mean the same,\nand a search for iphone should also find apple phone.\n","text",[384,760,757],{"__ignoreMap":382},[330,762,763,764,767,768,771,772,775],{},"The agent calls ",[384,765,766],{},"upsert_synonyms"," once per rule. ",[384,769,770],{},"list_synonyms"," and ",[384,773,774],{},"delete_synonyms"," list and remove rules.",[325,777,779],{"id":778},"import-and-export","Import and export",[330,781,782],{},"The bulk format is the Solr synonyms text that Elasticsearch, OpenSearch and other search services also read. One rule per line:",[377,784,787],{"className":785,"code":786,"language":758,"meta":382},[756],"# Equivalent: every term finds the others\ntv, television, telly\nt-shirt, tee, tshirt\n# One way: the left side also finds the right side\niphone => apple phone\njacuzzi, whirlpool => hot tub\n",[384,788,786],{"__ignoreMap":382},[330,790,791,792,794,795,797],{},"Blank lines and lines starting with ",[384,793,569],{}," are skipped. A line with ",[384,796,565],{}," is a one-way rule, any other line is an equivalent rule.",[585,799],{"auth":592,"method":593,"path":800},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms\u002Fimport",[585,802],{"auth":587,"method":588,"path":803},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms\u002Fexport",[330,805,806,807,810],{},"The import body is ",[384,808,809],{},"{\"text\": \"...\", \"mode\": \"append\"}",", with up to 2,000,000 characters of text.",[435,812,813,819],{},[438,814,815,818],{},[384,816,817],{},"append"," (the default) adds the imported rules to the existing ones.",[438,820,821,824],{},[384,822,823],{},"replace"," deletes every existing rule and stores the imported ones in their place, in one step. Searches see either the old set or the new one, never a mix.",[330,826,827,828,831,832,835,836,375],{},"The answer counts what happened: ",[384,829,830],{},"{\"imported\": 4, \"deleted\": 0, \"total\": 4}",". If a line is not a valid rule, nothing is imported, and the API answers ",[384,833,834],{},"400 SYNONYM_PARSE_FAILED"," with the line number in ",[384,837,838],{},"details",[330,840,841,842,845,846,848],{},"The export answers ",[384,843,844],{},"text\u002Fplain"," in the same format, one rule per line, so an export imported with ",[384,847,823],{}," gives back the same rules.",[377,850,852],{"className":644,"code":851,"language":646,"meta":382,"style":382},"curl https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fsynonyms\u002Fexport \\\n  -H \"Authorization: Bearer $ZS_KEY\" > synonyms.txt\n",[384,853,854,871],{"__ignoreMap":382},[387,855,856,858,860,862,864,866,869],{"class":389,"line":390},[387,857,641],{"class":653},[387,859,663],{"class":404},[387,861,666],{"class":393},[387,863,669],{"class":404},[387,865,672],{"class":393},[387,867,868],{"class":404},"\u002Fsynonyms\u002Fexport",[387,870,679],{"class":678},[387,872,873,875,877,879,881,884],{"class":389,"line":682},[387,874,685],{"class":656},[387,876,688],{"class":404},[387,878,691],{"class":393},[387,880,694],{"class":404},[387,882,883],{"class":678}," >",[387,885,886],{"class":404}," synonyms.txt\n",[330,888,889,890,893,894,627,897,900,901,342,904,907],{},"In the cabinet, open ",[340,891,892],{},"Bulk import and export (Solr text)"," under the table. Paste the text, pick ",[340,895,896],{},"Append",[340,898,899],{},"Replace all rules",", and click ",[340,902,903],{},"Import",[340,905,906],{},"Load export into the box"," fills the text box with the current rules.",[325,909,911],{"id":910},"common-mistakes","Common mistakes",[435,913,914,920,926,937],{},[438,915,916,919],{},[340,917,918],{},"A synonym seems to do nothing."," Check that the target word is in a searched field of the profile. A synonym only adds words to the query; it cannot find a product whose searched fields hold none of them.",[438,921,922,925],{},[340,923,924],{},"Using equivalent rules for related, not equal, words."," \"laptop, notebook\" is fine. \"phone, phone case\" makes a search for phones show cases. Keep equivalent rules for words that mean the same thing, and use one way where only one direction holds.",[438,927,928,931,932,936],{},[340,929,930],{},"Adding misspellings."," With ",[545,933,935],{"href":934},"\u002Fdocs\u002Fsearch\u002Fprofiles#typos-allowed-per-word","typo tolerance"," on, \"televison\" already finds \"television\". Add a synonym for a different word, not for a typo.",[438,938,939,942],{},[340,940,941],{},"Importing with replace by accident."," Replace deletes the rules that are not in the text. Export first and keep the file.",[944,945,946],"style",{},"html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}",{"title":382,"searchDepth":682,"depth":682,"links":948},[949,950,954,955,956,957,958],{"id":327,"depth":682,"text":328},{"id":349,"depth":682,"text":350,"children":951},[952,953],{"id":368,"depth":705,"text":369},{"id":450,"depth":705,"text":451},{"id":523,"depth":682,"text":524},{"id":550,"depth":682,"text":551},{"id":582,"depth":682,"text":583},{"id":778,"depth":682,"text":779},{"id":910,"depth":682,"text":911},"md",{},{"icon":216},{"title":212,"description":215},"bbsdZ_7sZ2R2tO_MiE5MKZCx3yL22uStnJsKHj7trx8",[965,966],{"title":206,"path":207,"stem":208,"description":209,"icon":210,"children":-1},{"title":218,"path":219,"stem":220,"description":221,"icon":222,"children":-1},1792794344463]