On-site search personalization: ranking results by shopper intent
Shoppers who use site search convert at multiples of browsers, yet most stores rank results by keyword match alone. Personalizing search ranking by the shopper's intent signals, past behavior, and session context puts the right product first instead of the best text match. Search is the page where personalization has the least competition for attention and the highest intent to act on.
Search is your highest-intent page
A shopper who types into your search box has done the merchandising work for you: they named the product they want. Industry data consistently shows search users converting at two to five times the rate of non-search visitors. And yet the typical store treats the search results page as a database query with a nicer font.
That gap is the opportunity. Every other personalization surface competes with browsing, inspiration, and distraction. Search competes with nothing: the shopper asked a direct question, and the store that answers it with the single most relevant product wins the sale before the second scroll.
Reading intent from the query itself
The query carries intent signals most engines ignore. A search for 'red dress' is exploratory; a search for 'red midi dress size 8' is a buying query with the decision nearly made. Length, specificity, brand mentions, and attribute words like size, color, and material each shift what 'relevant' means, and the ranking should shift with them.
Misspellings and synonyms are intent signals too. A shopper who types 'sneekers' and still buys is showing determination; the engine should learn that query's true target from what searchers like them clicked, not from a static synonym list. Every query is a vote on what the catalog means, and the votes should retrain the ranking continuously.
Layering the shopper's history onto the ranking
Two shoppers searching 'jacket' want different jackets: the one who always buys black, the one who lives in size petite, the one whose last three orders were all waterproof shells. History should re-rank, not just filter: boost the products that match established preferences, but keep enough variety that the shopper can still discover.
The art is in the weighting. Over-personalized search feels like a trap: the shopper who bought one gift for a nephew now sees only children's products. Decay the history signals with time, weight recent sessions more than old orders, and always let the explicit query outrank the inferred preference when they conflict.
Session context: what they did in the last five minutes
For anonymous and first-time shoppers, the current session is the whole profile. Three product views in the same category, a size filter applied twice, a price sort toggled on: each action narrows intent, and the search ranking should incorporate all of it. A search for 'boots' after viewing waterproof jackets should surface waterproof boots first.
This is also where zero-party signals shine. A shopper who answered two quiz questions or set a size preference has handed you ranking features on a platter; use them in search before you use them anywhere else, because search is where the shopper will notice the relevance most.
Measuring search personalization honestly
The metrics that matter are search-specific: click-through on the top three results, add-to-cart rate from search, and the share of searches that end in 'no results' or immediate exit. A personalized ranking should move all three, and the no-results rate is the canary: it tells you whether the engine understands what shoppers actually want.
Run the test as a true holdout, not a before-and-after. Search behavior is seasonal and promotion-sensitive, so compare personalized versus baseline ranking on concurrent traffic. And watch the long tail: personalization often helps most on the vague, high-volume queries where text match is weakest, which is exactly where the revenue hides.