[{"data":1,"prerenderedAt":1389},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fsearch\u002Ffacets":319,"docs-\u002Fdocs\u002Fsearch\u002Ffacets-surround":1386},[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":206,"body":321,"description":209,"extension":1381,"meta":1382,"navigation":1383,"path":207,"seo":1384,"stem":208,"__hash__":1385},"docs\u002Fdocs\u002F5.search\u002F3.facets.md",{"type":322,"value":323,"toc":1364},"minimark",[324,329,339,347,351,354,362,380,393,399,403,412,549,552,556,574,688,809,867,951,955,961,965,968,972,975,978,1075,1078,1082,1092,1173,1288,1292,1300,1304,1360],[325,326,328],"h2",{"id":327},"what-a-facet-is","What a facet is",[330,331,332,333,338],"p",{},"A facet is a filter panel next to the results: the brands with a product count each, price buckets, a price slider or a category tree. Every search response carries the facets of its profile, counted for that search. When the shopper clicks a value, the storefront sends it back as a ",[334,335,337],"a",{"href":336},"\u002Fdocs\u002Fsearch\u002Fsearch-api#filters","filter"," and the next response shows the new results and counts.",[330,340,341,342,346],{},"A facet needs a field that is marked ",[343,344,345],"strong",{},"facetable"," in the index mapping. A facetable field can also be filtered by requests without further setup.",[325,348,350],{"id":349},"index-facets-and-profile-facets","Index facets and profile facets",[330,352,353],{},"The facets usually live on the index, in one ordered list with their labels, limits and buckets. Every search profile shows that list unless it has facets of its own.",[330,355,356],{},[357,358],"img",{"alt":359,"src":360,"title":361},"The Facets page with five index facets in order: a category tree, three value facets and a min and max facet for price, and fields not added yet below","\u002Fdocs\u002Fscreenshots\u002Ffacets.png","The index facets, in the order shoppers see them",[363,364,365,374],"ul",{},[366,367,368,369,373],"li",{},"A profile that leaves out ",[370,371,372],"code",{},"facets"," shows the index facets. Change them once and every such profile shows the change on its next search.",[366,375,376,377,379],{},"A profile that sets ",[370,378,372],{},", even to an empty list, shows its own list instead. Changes to the index facets do not reach it.",[330,381,382,383,385,386,389,390,392],{},"In the cabinet, open an index and then ",[343,384,206],{},". Add a facet per field, set its type and label, and drag the facets into the order shoppers see. ",[343,387,388],{},"Where they show"," lists the profiles that use the index facets and those that have their own. To give one profile its own facets, open the profile and change its ",[343,391,206],{}," block.",[394,395],"api-route",{"auth":396,"method":397,"path":398},"Project member or any secret key","GET","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Ffacets",[394,400],{"auth":401,"method":402,"path":398},"Project admin or a full-access secret key","PUT",[330,404,405,407,408,411],{},[370,406,402],{}," replaces the whole list. A facet on a field that is not facetable, or of a type the field cannot take, answers ",[370,409,410],{},"400 FACETS_INVALID"," with one issue per facet.",[413,414,415,527],"tabs",{},[416,417,420],"tabs-item",{"icon":418,"label":419},"i-lucide-terminal","curl",[421,422,427],"pre",{"className":423,"code":424,"language":425,"meta":426,"style":426},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl -X PUT https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Ffacets \\\n  -H \"Authorization: Bearer $ZS_KEY\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"facets\": [\n    {\"type\": \"hierarchy\", \"field\": \"category\", \"label\": \"Category\"},\n    {\"type\": \"terms\", \"field\": \"brand\", \"label\": \"Brand\", \"limit\": 30},\n    {\"type\": \"range\", \"field\": \"price\", \"label\": \"Price\", \"ranges\": [{\"to\": 100}, {\"from\": 100, \"to\": 500}, {\"from\": 500}]},\n    {\"type\": \"stats\", \"field\": \"rating\", \"label\": \"Rating\"}\n  ]}'\n","bash","",[370,428,429,465,488,497,503,509,515,521],{"__ignoreMap":426},[430,431,434,437,441,445,448,452,455,458,461],"span",{"class":432,"line":433},"line",1,[430,435,419],{"class":436},"szw1H",[430,438,440],{"class":439},"ssYy9"," -X",[430,442,444],{"class":443},"semJd"," PUT",[430,446,447],{"class":443}," https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F",[430,449,451],{"class":450},"s7iLA","$PROJECT_ID",[430,453,454],{"class":443},"\u002Findices\u002F",[430,456,457],{"class":450},"$INDEX_ID",[430,459,460],{"class":443},"\u002Ffacets",[430,462,464],{"class":463},"sklAV"," \\\n",[430,466,468,471,474,477,480,483,486],{"class":432,"line":467},2,[430,469,470],{"class":439},"  -H",[430,472,473],{"class":443}," \"Authorization: Bearer ",[430,475,476],{"class":450},"$ZS_KEY",[430,478,479],{"class":443},"\"",[430,481,482],{"class":439}," -H",[430,484,485],{"class":443}," \"Content-Type: application\u002Fjson\"",[430,487,464],{"class":463},[430,489,491,494],{"class":432,"line":490},3,[430,492,493],{"class":439},"  -d",[430,495,496],{"class":443}," '{\"facets\": [\n",[430,498,500],{"class":432,"line":499},4,[430,501,502],{"class":443},"    {\"type\": \"hierarchy\", \"field\": \"category\", \"label\": \"Category\"},\n",[430,504,506],{"class":432,"line":505},5,[430,507,508],{"class":443},"    {\"type\": \"terms\", \"field\": \"brand\", \"label\": \"Brand\", \"limit\": 30},\n",[430,510,512],{"class":432,"line":511},6,[430,513,514],{"class":443},"    {\"type\": \"range\", \"field\": \"price\", \"label\": \"Price\", \"ranges\": [{\"to\": 100}, {\"from\": 100, \"to\": 500}, {\"from\": 500}]},\n",[430,516,518],{"class":432,"line":517},7,[430,519,520],{"class":443},"    {\"type\": \"stats\", \"field\": \"rating\", \"label\": \"Rating\"}\n",[430,522,524],{"class":432,"line":523},8,[430,525,526],{"class":443},"  ]}'\n",[416,528,530,538],{"icon":267,"label":529},"MCP",[421,531,536],{"className":532,"code":534,"language":535,"meta":426},[533],"language-text","Set the facets of the products index to: category tree, brand (30 values),\nprice buckets under 100, 100 to 500 and 500 and up, and a rating slider.\n","text",[370,537,534],{"__ignoreMap":426},[330,539,540,541,544,545,548],{},"The agent calls ",[370,542,543],{},"get_facets"," and ",[370,546,547],{},"update_facets",".",[330,550,551],{},"An index or a profile holds up to 50 facets.",[325,553,555],{"id":554},"facet-types","Facet types",[330,557,558,559,562,563,566,567,570,571,548],{},"Every facet has a ",[370,560,561],{},"type",", a facetable ",[370,564,565],{},"field"," and an optional ",[370,568,569],{},"label"," of up to 100 characters. The label comes back in the response, so the storefront can show it above the panel. Without one, the response has ",[370,572,573],{},"label: null",[575,576,580,585,590,612,677],"setting",{"name":577,"type":578,"values":579},"terms","facet","any facetable field except hierarchy fields",[581,582,584],"h3",{"id":583},"values","Values",[330,586,587,588,548],{},"The field's values with the number of products for each, such as brands or colors. In the cabinet this type is called ",[343,589,584],{},[363,591,592,598],{},[366,593,594,597],{},[370,595,596],{},"limit",": how many values the response returns, 1 to 500. Default 20.",[366,599,600,603,604,607,608,611],{},[370,601,602],{},"order",": ",[370,605,606],{},"count"," (most products first, the default) or ",[370,609,610],{},"key"," (alphabetical).",[421,613,617],{"className":614,"code":615,"language":616,"meta":426,"style":426},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{ \"type\": \"terms\", \"field\": \"brand\", \"label\": \"Brand\", \"limit\": 30, \"order\": \"count\" }\n","json",[370,618,619],{"__ignoreMap":426},[430,620,621,624,628,630,633,636,639,641,644,646,649,651,654,656,659,661,664,666,669,671,674],{"class":432,"line":433},[430,622,623],{"class":450},"{ ",[430,625,627],{"class":626},"sb7M8","\"type\"",[430,629,603],{"class":450},[430,631,632],{"class":443},"\"terms\"",[430,634,635],{"class":450},", ",[430,637,638],{"class":626},"\"field\"",[430,640,603],{"class":450},[430,642,643],{"class":443},"\"brand\"",[430,645,635],{"class":450},[430,647,648],{"class":626},"\"label\"",[430,650,603],{"class":450},[430,652,653],{"class":443},"\"Brand\"",[430,655,635],{"class":450},[430,657,658],{"class":626},"\"limit\"",[430,660,603],{"class":450},[430,662,663],{"class":439},"30",[430,665,635],{"class":450},[430,667,668],{"class":626},"\"order\"",[430,670,603],{"class":450},[430,672,673],{"class":443},"\"count\"",[430,675,676],{"class":450}," }\n",[678,679,680],"template",{"v-slot:tips":426},[363,681,682,685],{},[366,683,684],{},"Values are counted exactly as stored, so \"Samsung\" and \"samsung\" are two values. Clean the data before you upload it.",[366,686,687],{},"A value outside the limit is not in the response, but a request may still filter on it. Raise the limit when shoppers need to see every brand.",[575,689,692,696,720,791],{"name":690,"type":578,"values":691},"range","number fields; 1 to 50 buckets",[581,693,695],{"id":694},"ranges","Ranges",[330,697,698,699,635,702,705,706,708,709,711,712,714,715,717,718,548],{},"Buckets you define, with a product count each. Each bucket has ",[370,700,701],{},"from",[370,703,704],{},"to"," or both: ",[370,707,701],{}," is included and ",[370,710,704],{}," is not. Leave out ",[370,713,701],{}," for \"under\", and leave out ",[370,716,704],{}," for \"and up\". In the cabinet this type is called ",[343,719,695],{},[421,721,723],{"className":614,"code":722,"language":616,"meta":426,"style":426},"{ \"type\": \"range\", \"field\": \"price\", \"ranges\": [{ \"to\": 100 }, { \"from\": 100, \"to\": 500 }, { \"from\": 500 }] }\n",[370,724,725],{"__ignoreMap":426},[430,726,727,729,731,733,736,738,740,742,745,747,750,753,756,758,761,764,767,769,771,773,775,777,780,782,784,786,788],{"class":432,"line":433},[430,728,623],{"class":450},[430,730,627],{"class":626},[430,732,603],{"class":450},[430,734,735],{"class":443},"\"range\"",[430,737,635],{"class":450},[430,739,638],{"class":626},[430,741,603],{"class":450},[430,743,744],{"class":443},"\"price\"",[430,746,635],{"class":450},[430,748,749],{"class":626},"\"ranges\"",[430,751,752],{"class":450},": [{ ",[430,754,755],{"class":626},"\"to\"",[430,757,603],{"class":450},[430,759,760],{"class":439},"100",[430,762,763],{"class":450}," }, { ",[430,765,766],{"class":626},"\"from\"",[430,768,603],{"class":450},[430,770,760],{"class":439},[430,772,635],{"class":450},[430,774,755],{"class":626},[430,776,603],{"class":450},[430,778,779],{"class":439},"500",[430,781,763],{"class":450},[430,783,766],{"class":626},[430,785,603],{"class":450},[430,787,779],{"class":439},[430,789,790],{"class":450}," }] }\n",[678,792,793],{"v-slot:tips":426},[363,794,795,806],{},[366,796,797,798,801,802,805],{},"To select a bucket, filter with exactly its bounds: ",[370,799,800],{},"{\"gte\": 100, \"lt\": 500}",". The response then marks that bucket ",[370,803,804],{},"selected",". Any other range filter still narrows the results but selects no bucket.",[366,807,808],{},"Every bucket comes back, even those with 0 products, so the panel keeps its shape.",[575,810,813,817,822,857],{"name":811,"type":578,"values":812},"stats","number fields",[581,814,816],{"id":815},"min-and-max","Min and max",[330,818,819,820,548],{},"The lowest and the highest value in the results, and how many values were counted, for a price slider. In the cabinet this type is called ",[343,821,816],{},[421,823,825],{"className":614,"code":824,"language":616,"meta":426,"style":426},"{ \"type\": \"stats\", \"field\": \"price\", \"label\": \"Price\" }\n",[370,826,827],{"__ignoreMap":426},[430,828,829,831,833,835,838,840,842,844,846,848,850,852,855],{"class":432,"line":433},[430,830,623],{"class":450},[430,832,627],{"class":626},[430,834,603],{"class":450},[430,836,837],{"class":443},"\"stats\"",[430,839,635],{"class":450},[430,841,638],{"class":626},[430,843,603],{"class":450},[430,845,744],{"class":443},[430,847,635],{"class":450},[430,849,648],{"class":626},[430,851,603],{"class":450},[430,853,854],{"class":443},"\"Price\"",[430,856,676],{"class":450},[678,858,859],{"v-slot:tips":426},[363,860,861],{},[366,862,863,864,548],{},"Send the slider position back as a range filter, such as ",[370,865,866],{},"{\"price\": {\"gte\": 120, \"lte\": 480}}",[575,868,871,875,880,887,923],{"name":869,"type":578,"values":870},"hierarchy","hierarchy fields only",[581,872,874],{"id":873},"category-tree","Category tree",[330,876,877,878,548],{},"A category tree that opens one level at a time. With nothing selected it shows the top level. When the request filters on the field, it shows the children of the deepest selected node. In the cabinet this type is called ",[343,879,874],{},[363,881,882],{},[366,883,884,886],{},[370,885,596],{},": how many nodes the response returns, 1 to 500. Default 50. Nodes come most products first.",[421,888,890],{"className":614,"code":889,"language":616,"meta":426,"style":426},"{ \"type\": \"hierarchy\", \"field\": \"category\", \"label\": \"Category\" }\n",[370,891,892],{"__ignoreMap":426},[430,893,894,896,898,900,903,905,907,909,912,914,916,918,921],{"class":432,"line":433},[430,895,623],{"class":450},[430,897,627],{"class":626},[430,899,603],{"class":450},[430,901,902],{"class":443},"\"hierarchy\"",[430,904,635],{"class":450},[430,906,638],{"class":626},[430,908,603],{"class":450},[430,910,911],{"class":443},"\"category\"",[430,913,635],{"class":450},[430,915,648],{"class":626},[430,917,603],{"class":450},[430,919,920],{"class":443},"\"Category\"",[430,922,676],{"class":450},[678,924,925],{"v-slot:tips":426},[363,926,927,938,948],{},[366,928,929,930,933,934,937],{},"Store the category as a path with ",[370,931,932],{},">"," between the levels: ",[370,935,936],{},"\"TV > OLED > 55 inch\"",". A product in several categories takes a list of paths.",[366,939,940,941,944,945,548],{},"Facet keys are full paths without spaces, such as ",[370,942,943],{},"TV>OLED",". Send a key back unchanged as the filter value: ",[370,946,947],{},"{\"category\": \"TV>OLED\"}",[366,949,950],{},"A hierarchy field takes only this facet type. A Values facet on it is refused.",[325,952,954],{"id":953},"how-selection-works","How selection works",[330,956,957,958,960],{},"A request filter on a facet's field marks the matching values ",[370,959,804],{}," in the response. Two rules decide the counts.",[581,962,964],{"id":963},"values-in-one-facet-add-up","Values in one facet add up",[330,966,967],{},"Values inside one facet combine with OR. A facet's counts ignore the request's filter on that facet's own field, so when a shopper ticks Samsung, the other brands keep their counts and the shopper can add LG as a second choice.",[581,969,971],{"id":970},"different-facets-narrow-each-other","Different facets narrow each other",[330,973,974],{},"Filters on different fields combine with AND. Each facet's counts include the filters on every other field. After the shopper picks a price bucket, the brand counts show only products in that price range.",[330,976,977],{},"An example with three brands and a price facet:",[979,980,981,1003],"table",{},[982,983,984],"thead",{},[985,986,987,991,994,997,1000],"tr",{},[988,989,990],"th",{},"Step",[988,992,993],{},"Selection",[988,995,996],{},"Results",[988,998,999],{},"Brand counts",[988,1001,1002],{},"Price counts",[1004,1005,1006,1024,1041,1058],"tbody",{},[985,1007,1008,1012,1015,1018,1021],{},[1009,1010,1011],"td",{},"0",[1009,1013,1014],{},"nothing",[1009,1016,1017],{},"163",[1009,1019,1020],{},"Samsung 80, LG 52, Sony 31",[1009,1022,1023],{},"all 163 products",[985,1025,1026,1029,1032,1035,1038],{},[1009,1027,1028],{},"1",[1009,1030,1031],{},"brand Samsung",[1009,1033,1034],{},"80",[1009,1036,1037],{},"unchanged, Samsung selected",[1009,1039,1040],{},"Samsung products",[985,1042,1043,1046,1049,1052,1055],{},[1009,1044,1045],{},"2",[1009,1047,1048],{},"brand Samsung or LG",[1009,1050,1051],{},"132",[1009,1053,1054],{},"unchanged, both selected",[1009,1056,1057],{},"Samsung or LG products",[985,1059,1060,1063,1066,1069,1072],{},[1009,1061,1062],{},"3",[1009,1064,1065],{},"and price 300 and up",[1009,1067,1068],{},"90",[1009,1070,1071],{},"within the price filter: 55, 35, 20",[1009,1073,1074],{},"Samsung or LG, every bucket",[330,1076,1077],{},"Profile filters and exclusions work differently. They narrow the results and every facet count, so a facet never offers a value the profile would never show. Ranking rules that filter results do the same.",[581,1079,1081],{"id":1080},"facet-results","Facet results",[330,1083,1084,1085,635,1087,544,1089,1091],{},"Each facet in the response has ",[370,1086,561],{},[370,1088,565],{},[370,1090,569],{},", plus:",[363,1093,1094,1108,1133,1155],{},[366,1095,1096,603,1098,1101,1102,635,1104,544,1106,548],{},[370,1097,577],{},[370,1099,1100],{},"items",", each with ",[370,1103,610],{},[370,1105,606],{},[370,1107,804],{},[366,1109,1110,603,1112,1101,1114,1116,1117,1120,1121,1124,1125,635,1127,635,1129,544,1131,548],{},[370,1111,690],{},[370,1113,1100],{},[370,1115,610],{}," (such as ",[370,1118,1119],{},"100-500",", or ",[370,1122,1123],{},"*-100"," for an open side), ",[370,1126,701],{},[370,1128,704],{},[370,1130,606],{},[370,1132,804],{},[366,1134,1135,603,1137,635,1139,544,1142,1145,1146,544,1148,1150,1151,1154],{},[370,1136,811],{},[370,1138,606],{},[370,1140,1141],{},"min",[370,1143,1144],{},"max",". ",[370,1147,1141],{},[370,1149,1144],{}," are ",[370,1152,1153],{},"null"," when no product has a value.",[366,1156,1157,603,1159,1162,1163,1166,1167,1169,1170,1172],{},[370,1158,869],{},[370,1160,1161],{},"level"," (0 for the top level), ",[370,1164,1165],{},"parent"," (the node whose children these are, or ",[370,1168,1153],{},") and ",[370,1171,1100],{}," with full-path keys.",[421,1174,1176],{"className":614,"code":1175,"language":616,"meta":426,"style":426},"{ \"type\": \"hierarchy\", \"field\": \"category\", \"label\": \"Category\", \"level\": 1, \"parent\": \"TV\",\n  \"items\": [{ \"key\": \"TV>OLED\", \"count\": 41, \"selected\": false }, { \"key\": \"TV>QLED\", \"count\": 28, \"selected\": false }] }\n",[370,1177,1178,1226],{"__ignoreMap":426},[430,1179,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1209,1211,1213,1215,1218,1220,1223],{"class":432,"line":433},[430,1181,623],{"class":450},[430,1183,627],{"class":626},[430,1185,603],{"class":450},[430,1187,902],{"class":443},[430,1189,635],{"class":450},[430,1191,638],{"class":626},[430,1193,603],{"class":450},[430,1195,911],{"class":443},[430,1197,635],{"class":450},[430,1199,648],{"class":626},[430,1201,603],{"class":450},[430,1203,920],{"class":443},[430,1205,635],{"class":450},[430,1207,1208],{"class":626},"\"level\"",[430,1210,603],{"class":450},[430,1212,1028],{"class":439},[430,1214,635],{"class":450},[430,1216,1217],{"class":626},"\"parent\"",[430,1219,603],{"class":450},[430,1221,1222],{"class":443},"\"TV\"",[430,1224,1225],{"class":450},",\n",[430,1227,1228,1231,1233,1236,1238,1241,1243,1245,1247,1250,1252,1255,1257,1260,1262,1264,1266,1269,1271,1273,1275,1278,1280,1282,1284,1286],{"class":432,"line":467},[430,1229,1230],{"class":626},"  \"items\"",[430,1232,752],{"class":450},[430,1234,1235],{"class":626},"\"key\"",[430,1237,603],{"class":450},[430,1239,1240],{"class":443},"\"TV>OLED\"",[430,1242,635],{"class":450},[430,1244,673],{"class":626},[430,1246,603],{"class":450},[430,1248,1249],{"class":439},"41",[430,1251,635],{"class":450},[430,1253,1254],{"class":626},"\"selected\"",[430,1256,603],{"class":450},[430,1258,1259],{"class":439},"false",[430,1261,763],{"class":450},[430,1263,1235],{"class":626},[430,1265,603],{"class":450},[430,1267,1268],{"class":443},"\"TV>QLED\"",[430,1270,635],{"class":450},[430,1272,673],{"class":626},[430,1274,603],{"class":450},[430,1276,1277],{"class":439},"28",[430,1279,635],{"class":450},[430,1281,1254],{"class":626},[430,1283,603],{"class":450},[430,1285,1259],{"class":439},[430,1287,790],{"class":450},[325,1289,1291],{"id":1290},"hide-empty-facets","Hide empty facets",[330,1293,1294,1295,1299],{},"A profile's ",[334,1296,1298],{"href":1297},"\u002Fdocs\u002Fsearch\u002Fprofiles#hide-empty-facets","hideEmptyFacets"," setting, on by default, leaves out facets with nothing to pick for the current search: no values, every bucket at 0, or a stats count of 0. A facet the request filters on stays even when it is empty, so the shopper can still see and clear the selection.",[325,1301,1303],{"id":1302},"common-mistakes","Common mistakes",[363,1305,1306,1312,1325,1351],{},[366,1307,1308,1311],{},[343,1309,1310],{},"A facet shows no values."," The field is facetable in the mapping but the documents hold no value for it, or hold a value of another type. Check the field in a few documents.",[366,1313,1314,1320,1321,548],{},[343,1315,1316,1317,548],{},"Filtering on a facet field answers ",[370,1318,1319],{},"FILTER_NOT_ALLOWED"," The profile shows its own facets and that field is not among them. Add the facet, or add the field to the profile's ",[334,1322,1324],{"href":1323},"\u002Fdocs\u002Fsearch\u002Fprofiles#extra-filterable-fields","extra filterable fields",[366,1326,1327,1330,1331,1334,1335,1338,1339,1342,1343,544,1345,1348,1349,548],{},[343,1328,1329],{},"A range bucket is never selected."," The filter used ",[370,1332,1333],{},"lte"," or ",[370,1336,1337],{},"gt",". Send ",[370,1340,1341],{},"gte"," with the bucket's ",[370,1344,701],{},[370,1346,1347],{},"lt"," with its ",[370,1350,704],{},[366,1352,1353,1356,1357,1359],{},[343,1354,1355],{},"Index facets do not show on a profile."," The profile has facets of its own. ",[343,1358,388],{}," on the Facets page lists it under the profiles with their own facets.",[1361,1362,1363],"style",{},"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 .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}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 .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}",{"title":426,"searchDepth":467,"depth":467,"links":1365},[1366,1367,1368,1374,1379,1380],{"id":327,"depth":467,"text":328},{"id":349,"depth":467,"text":350},{"id":554,"depth":467,"text":555,"children":1369},[1370,1371,1372,1373],{"id":583,"depth":490,"text":584},{"id":694,"depth":490,"text":695},{"id":815,"depth":490,"text":816},{"id":873,"depth":490,"text":874},{"id":953,"depth":467,"text":954,"children":1375},[1376,1377,1378],{"id":963,"depth":490,"text":964},{"id":970,"depth":490,"text":971},{"id":1080,"depth":490,"text":1081},{"id":1290,"depth":467,"text":1291},{"id":1302,"depth":467,"text":1303},"md",{},{"icon":210},{"title":206,"description":209},"VwLJsTICz3_pCHULf3GxrUTx9tluHzXRDX5NcRfaVj0",[1387,1388],{"title":200,"path":201,"stem":202,"description":203,"icon":204,"children":-1},{"title":212,"path":213,"stem":214,"description":215,"icon":216,"children":-1},1792794344463]