Technoon Tutorials
Personalization with Search Engines


Written by Rajesh V

Preface

Product recommendations & product boosting are one of the biggest contributors in the eCommerce personalization space. Retailers report higher customer satisfaction & conversions by showing the customer with their products of interest. There are plenty of personalization of-the-shelf tools available in the market which primarily bring in the recommendated items for a given product & customer history of purchases.

e.g:
Customer who bought also bought
Also viewed by others
Accessories

But, the recommendations should not only come when the user is viewing a final product or after adding a product into the cart. Shouldn't these recommended products be planted when the customer is searching for the product itself ?


Proposed Personalization

How about we personalize the product we show to the customer is based on the customer's interaction with your site ?

What products the customer is searching for ?
What categories the customer is browsing ?
What refinements / facets the customer is using ?
What products the customer viewing ?
What keywords the customer is using for search ?
etc.,

Search Engines

The work horses to do this work are there in your ecosystem backyard. Yes, the search engines in your ecosystem could help to do these kind of personalization. Search engines doesn't have the domain knowledge, you need ask the right questions to get the right results from these engines. For the rest of the discussion, we will refer Solr as the search engine.


Based to Category Selection

When a customer is browsing and keep coming to a particular type of categories, then we can include these category in the next query to the search engine and boost the products that belongs to these categories.
e.g. A customer who wants to buy a Laptop may be interested in browsing the 'computer & laptop' department. So when the customer searches for a 'Laptop', refine and boost the results from these departments.

st = 15 inch laptop
q = {!boost b=$b v=$st}
b = query(category:last_clicked)

Based on the facet customer selects

If the customers are interested in certain refinements of products in the current session, then you can include these facets / refinements as part of your next keyword search from the very same customer.
e.g. Customer selects the Intel I3 processor or a the 5 star ranked items as the search filter options. You could be sure that the customer is looking for a laptop having a 5 star rating with intel i3 processor. So, during the next keyword search, boost the products with these characteristics.


Based on the Product viewed

If the customers are looking frequently at the details of products of particular type e.g. Laptops with 8GB Memory, Laptops with 2.4 GHZ or particular Brand of laptops, etc., With these behaviour, you can bring in more refined search results from the search engine and show the Laptops which the customer might be interested to buy.
These parameterized queries are supported by Solr with the help of functional queries.

st = Laptop
q = {!boost b=$b v=$st}
b = prod(sum(1, query($pref)), $diff)
pref = mfg:Apple
diff = avg_user_ratings

Where POW, SUM, PROD are query functions in Solr. Refer Solr Functional Queries for more information.