Search & filters
Search overview
What replaces native search and how queries resolve.
The search takeover replaces Shopify's native search with queries against your own index. Same engine as the collection grid, same fitment awareness, same speed.
How a query resolves#
- Normalize The raw query is lowercased, trimmed, and run through your synonym rules — so "chevy" finds Chevrolet and "cat back" finds cat-back.
- Look for a SKU An exact SKU match short-circuits everything and redirects straight to that product page. Staff and repeat buyers type SKUs; making them read a one-result page is a small insult.
- Look for a vehicle Tokens are tested against the taxonomy. "f150 6 inch lift kit" yields the F-150 plus the remaining terms.
- Search The leftover terms run against title, vendor, SKU, product type and your spec fields, typo-tolerant, ranked by the ranking tuner.
- Filter If a vehicle is active — whether pre-existing or detected in step 3 — fitment filtering applies unless the shopper turns it off.
Vehicle detection#
Detection is conservative. It requires enough tokens to identify one vehicle unambiguously; "ford" alone sets nothing, because narrowing a search to every Ford ever made is not helpful.
When a vehicle is detected you can either set it as active automatically, or show a confirm chip ("Searching for your 2019 F-150 — not your vehicle?"). The chip is slightly slower and considerably less annoying; it is the default.
What's searchable#
| Field | Weight | Notes |
|---|---|---|
| Title | Highest | Typo-tolerant |
| SKU | High | Exact match triggers redirect |
| Vendor | Medium | Brand searches are common |
| Product type | Medium | |
| Spec fields | Low | "6 inch", "ceramic", "combo beam", "5x114.3" |
| Body copy | Not indexed | Deliberately — descriptions are noisy |
Caching#
Popular queries are served from Redis, keyed by shop, query, vehicle and filters. That is why the tenth shopper searching "f150 lift kit" this hour gets an instant response — and why analytics is recorded at route level rather than inside the cache layer, so cached hits still count.
Support is answered by the people who wrote this code — not a ticket queue.