Accidentally I saw this clue on Ozone:

For me, this is probably the best example of
how not to do a search in an online store . The fact is that all these tips can calmly take over the iron brain, and thus unload the user's brain. At the same time, the buyer will not even notice that something has gone wrong, which means that nothing will stop him before buying. It should be noted that a number of errors govern this particular search, but in my case with a copy-paste of the name of the book from the wholesale price did not work.
')
Ourselves is not the best search in the world, but it sells. Let's show what we did.
Common architecture
Until about 2011, we used a hierarchical navigation system, when the product belonged to a category, and the category always lay in a supercategory. Well, the usual tree. After that, we started navigating with tags: in fact, any page of the site directory is always a search result. Speaking a little wider, the category itself contains the data on which product to select in it. That is, ideally, the data themselves dictate to our robots how to read them and what to do with them. This paradigm was needed for a number of the following steps, but for now let's stop at the search.
So, any page of the site is the result of the search. "All products" is a search without conditions. "Kids" is a search by age or the "Kids" tag. Mafia is a subcategory of search for all games in the series.
Some requests have a static address - it appears when we decide to register them in the navigation. A number of queries also have a static address alias, but they are not shown in the navigation - they are needed to maintain the correct structure from the SEO point of view.
With the cache device, of course, swallowed, but it was worth it.
Handling input errors in the search
The user enters a search query. If there are no goods in it, the state “user is mistaken” is generated, and the following theses are checked further:
1. TyposEach product has a set of associative keys that are associated with it. This name, sometimes the manufacturer, different versions of the name, the original name (in the language of the manufacturer), transcription options. The first approach was to rewrite known typos and put them as hidden (for display) aliases for the name. We created such a base of incorrect names and brought into it everything that users wanted, but could not find. The approach was not the most correct, but then it was faster to decide the work of the content manager, rather than development. Later came the update, which simply built the distance of Damarau-Levenshteyn to the nearest product and assumed it or not. So we completely solved the problem of even very cruel typos.
2. Wrong layoutA simple query with an inverted layout is simply added to the search. The main thing is to go through sweat and typo filter too. For some time we support and translit for people without a Russian keyboard.
3. Invalid product nameMany products are looking for so that the typo filter does not help. If, for example, "Activity" - "Activia" will be well disassembled by the previous filters, then at the request of "Erudite" some users seriously expect to find "Scrabble". As well as Dzhengu on request "tower". This is solved, again, by creating synonyms for each game, including the most common mistakes in memorizing product names. Just the other day, journalists from television presented a new synonym for our beloved "Jackal" - now it is also being searched for at the request of "Coyote".
Tips do not cease to appear, even with a deliberately wrong version.4. Wrong word orderWe, in general, do not care for it, the processing logic does not change. But there are people who use hints, so we list not only what begins with the specified word, but also what corresponds to synonyms and parts in any order, to the list of hints. For example, if you start typing "details ...", the tips will be something like this:
Behind the wheel-5 - also children's
Closer to users. Damerau and Levenshtein do not know, but Cheburashka is a friend of the crocodile Gena. Our database of goods synonyms knows this.We increase user convenience
Let's go back a step. The user enters a request. Possible results:
More than one result without modifying the query.Great, it seems the user has found the piece he needs in the assortment. Just show the catalog page with the search form and all that.
The filter of synonyms is used before error checking - on request "scholar" is "Scrabble"Exactly one search result.In this case, we learned from Wikipedia - you need to immediately transfer to the result page, that is, on the item card. Our search right in the header of the site, in a prominent place, does not go anywhere, that is, if the product is not the one, the user will continue. But if that one (which is much more likely), it will not have a blank page, where the only possible action is just to click on the only search result.
Nothing was found, but after the filters there is one result.Here you need to show a search page with an explanation of how we corrected the request to find the right product. The same is done if there are a lot of goods, but it is here that it is important not to transfer immediately to the “strange” result.
There was nothing at allThis means that some real garbage got into the search field. This is a reason to write it to the log and think about it if it happens again ten times a month. And the user is shown an empty box - and immediately under it hits (so that only he does not take them for the search result). Why? Because the logic suggests that if a person has not found anything, then he will either continue to search, or go to the directory. But we brought the most likely catalog page directly to his mouse.
This product was found, but it is not availableThis is no longer a search task. If the product is found - we send it to him. If, for example, this is an old version of a game that has been discontinued, or some edition that is temporarily not available, a special block may be shown explaining why you should not rely on this position, for example: “The product was discontinued in 2011”. And next to it will be either new editions or similar products that are taken from the database of related products or the matrix of paired goods, but not from the search.
Summary
Interesting, but we do not have full-text search for the product description - this task is simply not worth it, and even confuses the user a little. If desired, this can be easily done by changing one parameter in the request, but we are not doing this yet. Because 99% of our requests are names or something similar to them.
Recently, users often complain that when you select an item from the list of tips, you need to additionally press a button, it does not move right away. In Google and Yandex it is done this way, hence the experience. And when I was designing, I recalled Nielsen’s grandfather, who taught the opposite - they say, the list is a choice, but not an action, the user must feel control at such moments. Apparently, this view is already old-fashioned, and a new familiar type of behavior has emerged for this element of the interface.
One of the known problems - the form of a thin search in time of the party, the genre of the game, and so on is where the navigation usually happens. Some people do not notice it there and say that we don’t have a search for availability in specific stores. He is, just slept. In the next major release, we want to bring this form directly to the catalog page in place of the first products.
From the features - we have the entertainment “find your game” - people enter the last name, and the search corrects five or six “typos” in it and prompts you that it is closest to it.