Changes

Jump to navigation Jump to search
no edit summary
Line 1: Line 1:  +
== Summary ==
 +
 +
This page contains the functional specifications for the [[Server-side product indexing and search]] task of the [[Project:Personalized_Search]] project.
 +
 +
It lists the options we are considering and the one we choose.
    
== Search API ==
 
== Search API ==
    
The search API is called by the app to retrieve a high number of generic search results (products) that match a query.
 
The search API is called by the app to retrieve a high number of generic search results (products) that match a query.
 +
 +
<div style="background-color:#ddddff;border:1px solid black;padding:1em">
 +
There are some choices we need to make:
 +
# '''How do we declare what kind of products we want to get back (matching)'''
 +
## Recommendation: by category + by keyword
 +
# '''Which of the matching products do we send back (ordering)'''
 +
## Recommendation: query-independent sort key based on product data completeness, data quality, product quality and product popularity
 +
</div>
    
=== Match (required) ===
 
=== Match (required) ===
Line 43: Line 56:  
* It could be very expensive to retrieve similar products in real-time or to pre-compute all of them
 
* It could be very expensive to retrieve similar products in real-time or to pre-compute all of them
 
* Does not work for category search of freely typed search queries
 
* Does not work for category search of freely typed search queries
 +
 +
==== Match a given set of products ====
 +
 +
Given the barcodes of multiple products, return the corresponding products.
 +
 +
This is to be used to make in-store personalized recommendations: the user scans all possible product choices he/she is contemplating (e.g. 5 different breakfast cereals), and we return the corresponding products, which can then be filtered/ranked according to the user preferences.
    
=== Optional filters ===
 
=== Optional filters ===
Line 59: Line 78:     
Possible criteria to include in the sort order:
 
Possible criteria to include in the sort order:
 +
 +
==== Completeness of data ====
 +
 +
Products for which we have enough data (e.g. ingredients, nutrition facts)
 +
 +
==== Data quality ====
 +
 +
Products for which there are no data inconsistencies (e.g. warnings on nutrition facts)
    
==== Product quality ====
 
==== Product quality ====
Line 92: Line 119:  
== Performance ==
 
== Performance ==
   −
95% of search queries need to return results in less than 10 seconds.
+
* 80% of search queries need to return results in less than 5 seconds.
 +
* 95% of search queries need to return results in less than 10 seconds.
    
Search queries should not overload the OFF servers (API server + MongoDB server)
 
Search queries should not overload the OFF servers (API server + MongoDB server)
 +
 +
[[Category:Project:Personalized_Search]]
 +
[[Category:Search]]

Navigation menu