The trace
Why an answer is what it is: every step a search, a page or a product lookup took, with what it decided.
A search
The id of a release. A release is named by its content and never changes.
The id of a catalog snapshot. A snapshot is named by its content and never changes.
A release was being published while this request was answered; either release's live settings, such as its synonyms or typo settings, may have applied.
The index run this was answered from and how it took the release live: switched in, with settings, or built.
The release's files the live run derived from its catalog because the release leaves them out, such as categories.json with the facets or ranking.json with the sort options. They answered as if written; the run report gives the reason for each of their settings.
The request as it was answered: with the time it arrived at, and the channel and locale it was answered in. Replayed as a search test or in the preview, against the same release and snapshot, it gives the same response.
One entry per step, in the order the steps ran.
The steps of a search
One entry per step, in the order the steps ran.
normalize
The query as the engine's tokenizer reads it.
resolve
What the query named, and the text that is left.
The categories, brands and values a query named, and the text that is left.
5 fields
The id of a category node, such as wohnen/sofas: the merchant's id of a category entity.
Nothing is left as text.
What a relaxed search left out of what the query named, each as the filter it would have been, with its labels, so a storefront can say what the results leave out. Empty unless the response is relaxed.
Each word or phrase that became the category or a filter, with the entry it matched.
Words that matched something and stay text all the same, each with the reason.
Words that matched something and stay text.
3 fields
Why they stay text, such as "they name the category Sofas and the brand Sofa Company alike".
What they could have meant.
What the words named in a field the shopper chose themselves: their choice replaces it, so the words neither filter nor are searched, as "graues" after the shopper ticked blue on "graues Sofa".
What the query named as its chips read in the request's locale, held to or left out: the category and one filter per field, each with its labels, such as the category's title.
rules
Every candidate rule of one phase, in rule order, with the one state it ended in.
3 values
Rules that resolve terms or remove words, before the query is resolved.
Rules that redirect; the highest one ends planning.
Rules that filter, hide, pin, boost, bury, order sections and place banners.
What became of one candidate rule.
8 fields
A rule's id, unique per release, such as home/out-of-stock-last. It appears in traces, tests, diffs and filter chips, so it is visible to storefronts and holds no secrets.
The rule's line from rules.json, so the trace reads without the release.
5 values
Every effect took place.
Some effects were moved or skipped; each says why.
The rule matched, but a higher rule's redirect ended planning.
The condition failed.
Disabled, or outside its schedule.
The part of the condition that matched, as a sentence.
The part of the condition that failed, as a sentence.
Why the rule was inactive or not applied.
What became of one effect.
10 fields
One of resolve, rewrite, redirect, filter, hide, pin, boost, bury, sections or place.
One of applied, moved or skipped.
The section it acted in, by type: an effect that reaches the sections of several types is traced once for each.
What the effect was about, as a sentence, such as "brand is bosch", "product:SOFA-LUND-3" or, for a placement, the banner's title.
Placements: where on the page the banner sits.
3 values
Pins and grid placements: the position asked for.
Pins: the slot the plan expects it to take. A higher pin that fails a filter frees its slot only in the engine, so where a hit landed is the rank step's. Grid placements: the position it took.
One of slight, medium or strong.
Why the effect was moved or skipped, such as "skipped: limit", or for a placement this page does not show, why not, such as "position 30 is on page 2".
sort
The order the page lists its hits in, and where that choice came from.
The sort option; relevance is built in.
Where the order of a page came from.
5 values
The shopper chose it; it wins over any default.
The request has words, which rank by relevance unless the shopper chose another order.
The nearest category node that sets a default sort, up the tree from the page's category.
The default layout of categories.json.
Nothing sets a default sort: relevance, which is built in.
The category whose node sets the sort, when source is category.
Why, as a sentence, such as "The category wohnen/sofas sets price_desc as its default sort."
plan
The searches the engine is asked for, one per section, and the type the page lists.
The type a page lists, whose section pages through the results, carries the facets and takes what the query named.
One search of the plan, as the engine receives it; for developers.
9 fields
The section it fills.
The engine index it searches.
The text it searches for.
The engine filter, when the search is narrowed.
The engine sort, when the request chose one.
Hits it returns; none for a search that only counts.
The engine fields whose values it counts.
The facet it counts under every filter but that facet's own, so that choosing a value keeps its siblings; its hits are not shown.
execute
The engine's answer, in one multi-search call.
From sending the call to reading its answer, in milliseconds.
relax
Nothing matched the resolved search, so it was searched again with less of what the query named.
What the next search leaves out: the category and the filters the query named, one field each.
The text it searches.
facets
How each facet was counted, and where a count can only be an upper bound.
How one facet of a section was counted.
9 fields
The code of an entity type, such as product, category or a merchant's own store.
A field a selector, filter or facet reads: an attribute code, or one of the built-in fields category, brand, price, on_sale, availability, delivery_days and rating.
The search of the plan that counted it, counted from 0.
The values shown.
The most values the facet carries before more: the layout's limit, or the limit facet_values. None for a facet without a cap: one the request named, and every kind but a list or a swatch.
How many values with results the cap left out.
Chosen values the results do not hold, shown with a count of 0 so they can be unchosen.
Why the counts are upper bounds, when they are.
Why a facet's counts can be higher than the tiles a shopper would find. Every other count is exact.
2 fields
Several values are chosen in these variant-level fields, and a tile may hold a variant for each: the counts add them up, at most as high as the tiles that have the value in some variant matching the other choices.
1 field
A free range over this variant-level field narrows the results beside a choice in another variant-level field, and one variant may meet the range while another meets the choice.
1 field
A field a selector, filter or facet reads: an attribute code, or one of the built-in fields category, brand, price, on_sale, availability, delivery_days and rating.
The bins of a histogram, which only approximate the distribution. The same however the facet came to be counted, by the page or by a request that named it; a histogram the page left out is in deferred of the step instead.
How a histogram's bars were drawn, which makes them an approximation of the distribution: the bins are a fixed ladder of preferred numbers, each 8 to 15 percent above the one before and the same whatever the catalog holds, so a bar says where products sit, not exactly how many. A tile with several prices counts in every bin one of them falls in, so the bars may add up to more than the tiles, and the chosen range may cut a bin in two. Each count itself follows the rules of any other facet's.
The facets the page lists without counting them: those past the limit counted_facets that no choice and no request named, and the facets of a group that none of those reached.
The page's groups of facets and how each was counted.
How a group of facets was counted: all of them or none, since a finder with a facet left out would draw an empty select, and a group is one control that a shopper opens or reads at once.
4 fields
The code of a group of facets on a page, such as tyre_size.
Its facets as the page lists them, in the group's order.
The page counted every facet of it, or none: it did not count the group.
Why, as a sentence, such as "tyre_size stands at position 7 of the page, within the first 30 facets it counts".
rank
Why each hit of the page sits where it does: the pin that placed it, the boosts and buries that weighed it, and its business score.
The hits of one section and why each sits where it does.
2 fields
The code of an entity type, such as product, category or a merchant's own store.
One hit and what placed it.
10 fields
An entity named with its type, type:id, such as product:SOFA-LUND-3.
The merchant's id of an entity, unique per type, such as SOFA-LUND-3. It travels unchanged; OrbSearch never rewrites it.
Its place on the page, counted from 1.
The rule whose pin put it here.
The campaign of that pin, when it is a paid one.
The campaign a paid placement belongs to: { "campaign": "Michelin spring" }.
1 field
The merchant's name for it, which the campaign report counts by.
The boosts and buries that weighed it, each with the factor it gave.
What the engine compared it by, in the order it compares, its business score among them.
One criterion the engine compared hits by, with this hit's value. Hits are compared criterion by criterion in the order the engine ranks by, and the first criterion two hits differ in decides which comes first.
7 fields
How many typos it took to find those words; fewer come first.
1 field
The sort the request chose, and the hit's value in it; a hit without a value comes last.
4 fields
The code of a sort option, such as price_asc. relevance is built in.
A field of an entity as search and result settings name it: a core field such as title, or an attribute as attributes.<code>; sort options also read signals.<code>.
One of asc or desc.
Its business score from 0 to 1; higher comes first.
1 field
How close together the query's words stand in it, from 0 to 1; closer comes first.
1 field
How early among the type's searched fields, and how early in a field, the words were found, from 0 to 1.
1 field
The query's words it was found by, each with the fields it was found in and the synonym it was found through.
A word of the query and how the hit was found by it.
5 fields
The word as the engine reads the query.
The synonym it was found through, when the hit holds the synonym and not the word itself.
The entry of synonyms.json that leads the word to its synonym, such as de/groups/0; with synonym only.
The word of the hit it was found by with a typo, as its field writes it, such as Bremsbelag for bremsbelg.
The searched fields it was found in, in the type's order, such as title; words holds what the index adds, such as the titles of its categories.
The signals of its business score with their weights, the one that adds the most first.
Why it sits here, from the facts above and the rest of the trace, in the order the reasons act.
One reason a hit sits where it does, in a sentence and as data.
2 fields
The reason in a sentence, such as "Pinned to position 1 by the rule “Sommer-Sale”."
7 fields
A rule pinned it to its place, which comes before everything else; a paid pin names its campaign, and the sentence calls it a sponsored placement of that campaign.
4 fields
A rule's id, unique per release, such as home/out-of-stock-last. It appears in traces, tests, diffs and filter chips, so it is visible to storefronts and holds no secrets.
A rule's boost or bury weighed it against the hits beside it.
4 fields
A rule's id, unique per release, such as home/out-of-stock-last. It appears in traces, tests, diffs and filter chips, so it is visible to storefronts and holds no secrets.
One of resolve, rewrite, redirect, filter, hide, pin, boost, bury, sections or place.
Words of the query named something it is or has, which narrowed the results to it.
6 fields
Picks entities (where). Attribute codes and the built-in fields brand, price, on_sale, availability and delivery_days are keys of the same object; category takes is or within.
{ "any": [{ "brand": "bosch" }, { "quality": "oe" }], "not": { "availability": "out_of_stock" } }
Where the meaning comes from, such as "the alias "graues" of the color group Grau".
A rule's id, unique per release, such as home/out-of-stock-last. It appears in traces, tests, diffs and filter chips, so it is visible to storefronts and holds no secrets.
The entry of synonyms.json that let the words name it, such as de/groups/0, when a synonym did.
A word of the query found it only through a synonym, which the entry of synonyms.json holds.
The sort the request chose orders the page.
4 fields
The code of a sort option, such as price_asc. relevance is built in.
A field of an entity as search and result settings name it: a core field such as title, or an attribute as attributes.<code>; sort options also read signals.<code>.
One of asc or desc.
Its business score orders it among the hits that match as well as it does; signal adds the most to it.
2 fields
One signal of a hit's business score.
assemble
The sections of the response, in order.
One section of the response.
4 fields
The code of an entity type, such as product, category or a merchant's own store.
Why the total is an upper bound, when it is.
Why a facet's counts can be higher than the tiles a shopper would find. Every other count is exact.
2 fields
Several values are chosen in these variant-level fields, and a tile may hold a variant for each: the counts add them up, at most as high as the tiles that have the value in some variant matching the other choices.
1 field
A free range over this variant-level field narrows the results beside a choice in another variant-level field, and one variant may meet the range while another meets the choice.
1 field
A field a selector, filter or facet reads: an attribute code, or one of the built-in fields category, brand, price, on_sale, availability, delivery_days and rating.
How many hits this page shows.
suggest
The suggestions of the autocomplete surface, in order, each with the entry of the catalog dictionary it came from.
One suggestion and where it comes from.
4 fields
The id of a category node, such as wohnen/sofas: the merchant's id of a category entity.
The entry it completes, as a sentence, such as "the word "Ecksofa" of product titles, whose head is the category Sofas".
The products that hold it, which rank it; for a scoped suggestion, those in its category.
A page
How a URL was resolved: each step of the order with what it found; the last one decided.
The channel and locale the URL was resolved in.
A BCP 47 language tag such as de, de-CH or en. A locale falls back along its tag: de-CH to de.
The path as it is matched: percent-decoded, in lowercase, without duplicate or trailing slashes.
2 fields
The order a URL is resolved in, then what decides about the page once it is known.
8 values
The legacy table, redirects.json: its exact entries, then its patterns.
The search page's path.
The paths of the catalog's categories and brands.
The path written differently from the page's own, such as in another case or with a trailing slash.
The URL's parameters read as filters, sort and page.
A product by its URL.
Whether search engines may index the page, and its canonical.
What the results change: an empty page, a page past the last, a search that leads elsewhere.
What the step found, in a sentence.
A product
Why a product lookup answered what it did.
The id of a release. A release is named by its content and never changes.
The id of a catalog snapshot. A snapshot is named by its content and never changes.
A release was being published while this request was answered; the product may be the new release's already.
The release's files the live run derived from its catalog because the release leaves them out, such as types.json, whose details say which details the product lists.
The request as it was answered, with the channel and locale it was answered in.
A product lookup as it was answered.
The engine index the product was read from, which the index run compiled for lookups.
The engine filter that found it.
From sending the lookup to reading its answer, in milliseconds.
Guide: The trace
Detection
Words of the query that became the category or a filter.
The words as the query wrote them, such as graues.
Where the meaning comes from, as a sentence, such as "the alias "graues" of the color group Grau".
The rule that decided what the words mean, when one did.
The pattern that read them, when one did: the id of the release's pattern, or the built-in pattern's name.
The entry of synonyms.json that let the words name it, such as de/groups/0: "couch" names the category Sofas through the group of "couch" and "sofa".
SignalScore
One signal of a hit's business score.
The code of a signal, such as sales_30d or rating.
The signal as the catalog sends it, when it does.
Normalized to 0..1, the better the higher.
Its weight in the type's business score.
Timings
How long the Query API took for a request, as the server measured it: from the request's arrival to its assembled answer, so writing the answer and the network path to the client come on top. Each time is held against the p95 budget of its kind: one request above it is a warning, and the budget is missed when more than 5 of 100 are. Only the server measures, so a trace assembled anywhere else, such as in a test, has none.
The whole time in milliseconds, the engine round trips included.
The engine round trips together, in milliseconds: every call the request sent, a relaxed search's first one included.
The Query API's own share in milliseconds: the whole time without the engine round trips.
The Query API's own time before its first engine call: reading the request, understanding the query and planning the searches. The rest of own_ms comes after the engine answered. A request that asks the engine nothing has none.
The budget of the whole time for the request's kind: autocomplete's, or that of a search and a page.
The budget of the Query API's own share.
WentLive
The index run a response was answered from, how it took its release live, and the offer changes its documents hold. With the release and the snapshot, they name what answered: a replay with the same three gives the same answer.