Finding relevancy: Improving your application search bar!

A presentation at Devoxx Ukraine in November 2020 in by Alexander Reelsen

Slide 1

Slide 1

Finding relevancy Improving your application search bar! Alexander Reelsen alex@elastic.co | @spinscale

Slide 2

Slide 2

Today’s goal Learn about search, relevancy and the user perspective!

Slide 3

Slide 3

The ultimate search experience

Slide 4

Slide 4

Slide 5

Slide 5

Slide 6

Slide 6

The ultimate search experience: Query intent stock crash 2008 tomorrow’s temperature barack obama age twitter cheap nike hoodie red xl

Slide 7

Slide 7

The ultimate search experience: Query intent Extremely generic Rarely needed for most web applications Many search use-cases are specialized E-Commerce News Social network

Slide 8

Slide 8

E-Commerce Start with a full text search

Slide 9

Slide 9

E-Commerce Start with a full text search Drill down via facetted navigation

Slide 10

Slide 10

E-Commerce Start with a full text search Drill down via facetted navigation Select product

Slide 11

Slide 11

The ultimate search experience: Commercial Intent Scoring is never neutral, influencing factors (E-Commerce) Popularity Profit Availability Previous searches Previous purchases Cross/Upselling products

Slide 12

Slide 12

LinkedIn Search Search for first name Search for last name Prefix search 1st degree > 2nd degree 2nd degree > 3rd degree

Slide 13

Slide 13

LinkedIn Search Rare surname more important than first name

Slide 14

Slide 14

Let’s build such a person search using Elasticsearch!

Slide 15

Slide 15

Product Overview

Slide 16

Slide 16

Elastic Stack

Slide 17

Slide 17

Elasticsearch in one minute Search Engine (FTS, Analytics, Geo), near real-time Distributed, scalable, highly available, resilient Interface: HTTP & JSON

Slide 18

Slide 18

Sample app: Social network Entity: Person Fields: Matching: First & last name Scoring: Employer & direct contacts Meta: Title & image

Slide 19

Slide 19

Sample app: Social network { } “name” : { “last” : “Reelsen”, “first” : “Alexander” }, “employer” : “Elastic”, “title” : “Community Advocate”, “image” : “1”, “contacts” : [ “philippk”, “philipk”, “philippl” ]

Slide 20

Slide 20

Demo

Slide 21

Slide 21

Run node application git clone https://github.com/spinscale/social-network-search-sample cd social-network-search-sample npm install # create static build npm run build npm run start # or for development mode w/ livereload npm run build

Slide 22

Slide 22

Install Elasticsearch # https://www.elastic.co/downloads/elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-darwin-x86_64.tar.gz # wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz # wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-windows-x86_64.zip tar zxf elasticsearch-7.9.3-darwin-x86_64.tar.gz cd elasticsearch-7.9.3 ./bin/elasticsearch

Slide 23

Slide 23

Install Kibana # https://www.elastic.co/downloads/kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-darwin-x86_64.tar.gz # wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-linux-x86_64.tar.gz # wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-windows-x86_64.zip tar zxf kibana-7.9.3-darwin-x86_64.tar.gz cd kibana-7.9.3 ./bin/kibana Point your browser to http://localhost:5601/

Slide 24

Slide 24

Slide 25

Slide 25

Slide 26

Slide 26

Slide 27

Slide 27

Slide 28

Slide 28

Summary Coming up with a simple query is easy Figuring out user intents is hard Coming up with a proper query will take time and tries Analytics & metrics are vital

Slide 29

Slide 29

Next steps rank_feature : Boost score based on numeric field value vector : Similarity search based on a feature vector

Slide 30

Slide 30

Can you quantify search experience

Slide 31

Slide 31

How to measure search improvements

Slide 32

Slide 32

Continuous feedback loop

Slide 33

Slide 33

Thanks for listening Q&A Alexander Reelsen Community Advocate alex@elastic.co | @spinscale

Slide 34

Slide 34

Resources GitHub Sample Repo rank_feature field type documentation vector field type documentation search_as_you_type field type documentation

Slide 35

Slide 35

Community & Meetups https://community.elastic.co

Slide 36

Slide 36

Discuss Forum https://discuss.elastic.co

Slide 37

Slide 37

Thanks for listening Q&A Alexander Reelsen Community Advocate alex@elastic.co | @spinscale