Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Surfacing the Products You Love on Spring

Julie Qiu
February 28, 2018

Surfacing the Products You Love on Spring

https://www.elastic.co/elasticon/conf/2018/sf/agenda?sess=surfacing-the-products-you-love-on-spring

Spring is a digital shopping destination that helps customers quickly find the products they love. They’re using Elasticsearch to return more relevant search results on their catalog of more than 300,000 products.

Learn how the Spring team builds a product catalog with Elasticsearch. Hear how they ensure product data is synced with information from external vendors — including product-specific metadata. Take a closer look at their Elasticsearch ingestion process, where they use cron jobs and NSQ to update products at least once every 12 hours. Plus, learn about projects the Spring team has tackled to improve their index and better understand their users' intent, including text search improvements with natural language processing (NLP) and refining products by color.

Julie Qiu

February 28, 2018
Tweet

More Decks by Julie Qiu

Other Decks in Technology

Transcript

  1. 4

  2. 5

  3. Get product data into database Keep database in sync with

    Elasticsearch Search challenges @jqiu25
  4. Finding the perfect outfit Search is hard Price matters Too

    many shoes What is a “blue dress”? @jqiu25
  5. Finding the perfect outfit Search is hard Price matters Too

    many shoes What is a “blue dress”? No need for words @jqiu25
  6. Finding the perfect outfit Search is hard Price matters Too

    many shoes What is a “blue dress”? No need for words This time, it’s personal @jqiu25
  7. • Get product data from suppliers Search is kind of

    hard @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  8. • Get product data from suppliers • Sync Postgres with

    Elasticsearch Search is kind of hard @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  9. Sync database with Elasticsearch ES repopulate (nightly) ES Catalog Ingestion

    System @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  10. Products Index Alias products (alias) products_20180131030000 products_20180131030000 products_20180129030000 products_group (index_group)

    (index) @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  11. • Get product data from suppliers • Sync database with

    Elasticsearch • Real-time updates Search is kind of hard @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  12. Real-time updates @jqiu25 Search Is Hard Price Matters Too Many

    Shoes Adding NLP Visual Browse It’s Personal
  13. Real-time updates Consistent Data Channon Heeled Sandal by Club Monaco

    @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  14. Consistent Data Channon Heeled Sandal by Club Monaco Regularly Updated

    $298 Now $139.30 Sizes: • 38 • 39 • 40 Unavailable Real-time updates @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  15. Real-time updates ES repopulate (nightly) ES Catalog Ingestion System @jqiu25

    Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  16. Real-time updates ES repopulate (nightly) ES ES sync (real-time) Catalog

    Ingestion System @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  17. • Mark products on sale Price Matters @jqiu25 Search Is

    Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  18. Mark products on sale ES repopulate (nightly) ES ES sync

    (real-time) Catalog Ingestion System @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  19. • Mark products on sale • Store prices in Elasticsearch

    Price Matters @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  20. Store prices in Elasticsearch Sale Tagger ES repopulate (nightly) ES

    ES sync (real-time) Catalog Ingestion System @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  21. • Mark products on sale • Store prices in Elasticsearch

    • Compute sale prices Price Matters @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  22. Compute sale prices { "price":"409", "prices":[ { "active_dates":{ "start":"2000-01-01T00:00:00Z", "end":"2100-01-01T00:00:00Z"

    }, "price":"409", "discount_amount":48, } ] } @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  23. Compute sale prices Consumer API ES @jqiu25 Search Is Hard

    Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  24. Let’s search for a pair of blue heels. blue heels

    @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  25. What I expect when I search for “blue heels” Too

    Many Shoes Price Matters Search Is Hard Adding NLP Visual Browse Personalized Experience @jqiu25
  26. Baby Powder Candied Veg Royal Silk Actual colors of these

    heels @jqiu25 Too Many Shoes Price Matters Search Is Hard Adding NLP Visual Browse Personalized Experience
  27. • Categorize data Too many shoes @jqiu25 Search Is Hard

    Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  28. Categorizing data: Sometimes it’s simple @jqiu25 Search Is Hard Price

    Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  29. What brand are these heels? @jqiu25 Search Is Hard Price

    Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  30. Vince Camuto Shoes of Prey Club Monaco What brand are

    these heels? @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  31. Categorizing data: Sometimes it’s simple Sometimes it’s complicated @jqiu25 Search

    Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  32. What color are these heels? @jqiu25 Search Is Hard Price

    Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  33. What color are these heels? Candied Veg Royal Silk Baby

    Powder @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  34. Color Categorization API Categorize data @jqiu25 Search Is Hard Price

    Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  35. • Categorize data • Aggregate documents Too many shoes @jqiu25

    Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  36. Aggregate documents @jqiu25 Search Is Hard Price Matters Too Many

    Shoes Adding NLP Visual Browse It’s Personal Consumer API ES
  37. • Categorize data • Aggregate documents • Display results Too

    many shoes @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  38. • Get Twiggle product features Incorporating NLP @jqiu25 Search Is

    Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  39. Get Twiggle product features Catalog Ingestion System ES Elasticsearch Cron

    Jobs NSQ @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  40. • Get Twiggle product features • Index Twiggle’s product ontology

    Incorporating NLP @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  41. Index Twiggle’s product ontology { “$concept_sm”: [“Dress”, “FashionProduct”], “$color_o”: {"$concept_sm":

    [”Blue”]}, “design_patterns_o”: {"$concept_sm": [”Floral”, “Pattern”]}, “material_so”: {"$concept_sm": [”Silk”]}, “persona_so”: {"$concept_sm": [”Women”]}, /* …more features… */ } @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  42. • Get Twiggle product features • Index Twiggle’s product ontology

    • Interpret search queries Incorporating NLP @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  43. Interpreting search queries @jqiu25 Search Is Hard Price Matters Too

    Many Shoes Adding NLP Visual Browse It’s Personal Consumer API ES
  44. Interpret search queries “blue dress with a floral pattern under

    1600” { “@combine”: [ {“$concept_sm”: {“@eq”: “Dress”}}, {“$color_sm”: {“@eq”: “Blue”}}. {“$$price”: {“usd”: {“@lte”:1600}}}. {“design_patterns_o”:{ “$concept_sm”: {”@eq”: “Floral”} }}}, ] } @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  45. • Classify product attributes Visual browse @jqiu25 Search Is Hard

    Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  46. • Name • Brand • Price Classify product attributes •

    Size • Category • Color @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  47. • Classify product attributes • Generate similar products Visual browse

    @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  48. Generate similar products @jqiu25 Search Is Hard Price Matters Too

    Many Shoes Adding NLP Visual Browse It’s Personal Consumer API ES
  49. • Classify product attributes • Generate similar products • Browse

    by similar products Visual browse @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  50. • Classify product attributes (better) This time, it’s personal @jqiu25

    Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  51. Attributes we know • Name • Brand • Price •

    Size • Category • Color @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  52. • Style • Occasion • Season Attributes we want to

    know • Shape • Trend • … and more! @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  53. Catalog Ingestion System ES Elasticsearch Sync Jobs Attribute Tagging System

    @jqiu25 NSQ Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  54. • Classify product attributes (better) • Understand user preferences This

    time, it’s personal @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  55. Track user events Roland Mouret ALLERSTON DRESS - BLUE $2,885

    $1,440 @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  56. Track user events Products viewed Roland Mouret ALLERSTON DRESS -

    BLUE $2,885 $1,440 @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  57. Track user events Favorited products Products viewed Roland Mouret ALLERSTON

    DRESS - BLUE $2,885 $1,440 @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  58. Track user events Brands loved Favorited products Products viewed Roland

    Mouret ALLERSTON DRESS - BLUE $2,885 $1,440 @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  59. • Classify product attributes (better) • Understand user preferences •

    Personalize results This time, it’s personal @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  60. Personalize results Popular Products ES Personalized Products User Preferences User

    Events @jqiu25 Search Is Hard Price Matters Too Many Shoes Adding NLP Visual Browse It’s Personal
  61. Blue dresses personalized for me! women > clothing > dresses

    Roland Mouret ALLERSTON DRESS - BLUE $2,885 $1,440 Roland Mouret GERZON GOWN – NAVY WOOL $3,200 Laundry by Shelli Segal MATTE CREPE MERMAID GOWN $295 $177 @jqiu25