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 100: |
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]] |