full text search using azure search. shankar subramanyam senior consultant...

31
Full Text Search using Azure Search

Upload: augustine-francis

Post on 18-Dec-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Full Text Search using Azure Search

Page 2: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Shankar SubramanyamSenior Consultant

[email protected] | @Shankarblr

Enthusiast:• Web/Cloud Technologies• Financials• Economics

About me

Page 3: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Agenda

• Overview of Full text search using Azure Search• Demo – Build Movies Catalog using Azure Search• Q & A

Page 4: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

What is full text search?

• In text retrieval, full text search refers to techniques for searching a single computer-stored document or a collection in a full text database. Full-text search is distinguished from searches based on metadata or on parts of the original texts represented in databases (such as titles, abstracts, selected sections, or bibliographical references).

• Reference - http://en.wikipedia.org/wiki/Full_text_search

Page 5: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Full text search platform

• Lucene • Solr• ElasticSearch• Azure Search• FSIS• Database Full text search • etc.

Page 6: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Key words in search

• Indexes• Documents• Fields

• Types of searchability• Retrievable • Non-retrievable

• Tokenization - Analyzer • Facets• Scoring

Page 7: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

What is Azure Search ?

• Azure Search is a PaaS service • ElasticSearch as a managed service• High performance• Horizontally scalable• Administration and querying

• Via REST API• Via C#, using Azure Search Client Library (NuGet: AzureSearchClient)

• Secured using API keys• Query keys (multiple)• Management keys (two

Page 8: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Demo – Create Search Service in Azure portal

Page 9: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

1. Login to Azure Portal2. Click New 3. Select Data + Storage4. Select Search as shown

Page 10: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

1. Fill all the information 2. For Pricing Tire - Make

sure to select Free3. Click Create to create

Azure Search Service

Page 11: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Service Name and API Key

Page 12: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Azure Search Architecture

Index(schema type W)

Field

Service (a.k.a. resource)

Index(schema type X)

Index(schema type Y)

Index(schema type Z)

Document(type X)

Document(type X)

Document(type X)

Document(type X)

FieldField

Field

{json}

… …

… …

Page 13: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Inverted index

aardvark

hood

red

little

riding

robin

women

zoo

Little Red Riding Hood

Robin Hood

Little Women

0 1

0 2

0

0

2

1

0

1

2

{(2, 1)}

0 1

{(2, 0)}

{(0, 0)}

0

Terms/ Words Documents

Page 14: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

A z u re S e a rc h is s tru c tu re d

• A search index has a predefined structure• It is not dynamic• Each document can have below operations

• Search• Suggestion • Lookup • Count

• Each field in the index has characteristics defined when created

• Filterable?• Searchable?• Faceted?• Retrievable?• Sortable?

Page 15: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Key

• Required!• Can only be on one field for the document• Can be used to look up a document directly

• Update• Delete

Page 16: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Searchable

• Makes the field full-text-search-able• Allowed data types are string and collection • Breaks the words of the field for indexing purposes

• “Big Red Jeep” will become separate components

• A search for “big”, “red”, “jeep”, or “big jeep” will hit this record

• Searchable fields cause bloat!• Only make it searchable if it needs to be

Page 17: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Filterable

• Doesn’t under go word breaking• Exact matches only• Only searches for “big red jeep” will hit a “big red jeep”

record

Page 18: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Sortable

• By default, results are sorted by score

Page 19: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Facetable

• Data the data type except Geography points are facetable

• Used to rank records by other notions• Jeeps that sold by this {dealer}• Jeeps that are this {color}

Page 20: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Suggestions

• Used for auto-complete• Only for string or collection of string• False by default• Causes bloat in the index!

Page 21: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Field Characteristics: Retrievable

• Allows the field to be returned in the search results• Key fields must be retrievable

Page 22: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Data Type / Properties Matrix

Page 23: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Demo : Movies Catalog Create Index

Page 24: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Query parameters Request - GET /indexes/[index name]/docs?[query parameters]

Parameter – • search =[string] $orderby=[string]• searchMode=any|all facet=[string] • searchFields=[string] api-version=[string] • $skip=# scoringProfile=[string]• $top=# highlight=[string] • $count=true|false scoringParameter=[string] • $select=[string] highlightPreTag=[string]• $filter=[string] highlightPostTag=[string]

Example : https://rocks.search.windows.net/indexes/movies/docs?search=*&$count=true&$orderby=Year desc&api-version=2015-02-28&facet=Year

Page 25: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Demo : Movies Catalog Consume Index

Page 26: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

Q & A

Page 27: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:

References

• Azure Search REST API• http://msdn.microsoft.com/en-us/library/azure/dn798935.aspx• http://azure.microsoft.com/en-in/documentation/articles/searc

h-api-2014-10-20-preview/

• Azure Search Client Library Getting Started• https://code.msdn.microsoft.com/Getting-Started-with-Azure-5

0b624b7

• Inverted indexhttp://en.wikipedia.org/wiki/Inverted_index

Page 28: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:
Page 29: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:
Page 30: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast:
Page 31: Full Text Search using Azure Search. Shankar Subramanyam Senior Consultant shankarblr@gmail.comshankarblr@gmail.com | @Shankarblr@Shankarblr Enthusiast: