SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Edição 2018
#mvpconf
Rafael Cruz
Visual Studio and Development Technologies
Pesquisa e Indexação de Documentos com Azure Search
#mvpconf
Palestrante Rafael Cruz
Coders In Rio
rafaelcruz.azurewebsites.net
https://www.linkedin.com/in/rafaelcruzmvp/
@rafaelcruz_net
Biografia
Líder de Desenvolvimento na Icatu Seguros, desenvolvedor .NET há 14 anos,
Most Valuable Profissional (MVP), Instrutor Oficial Microsoft (MCT), Fundador do
Coders in Rio com mais de 1300 membros, adora compartilhar experiências na
área de desenvolvimento Web, Aplicativos Móveis e Cloud Solutions
#mvpconf
Agenda
• O que é Azure Search
• Cenários de Uso
• Provisionamento
• Criação de Indice
• Indexação
• Pesquisa
• Tuning
• Exemplo
• Dúvidas
#mvpconf
O que é Azure Search ?
É uma solução de pesquisa na nuvem gerenciado e elástico que
permitem que desenvolvedores incoporem pesquisas robustas nos
aplicativos sem a preocupação em gerenciar uma infraestrutura
complexa e nem precisar se tornar um experts em pesquisas.
O Azure Search permite que você crie pesquisas usando sua API Rest
ou o seu próprio SDK disponivel em diversas linguagens de
programação.
O Azure Search é baseado na engine de busca open source chamado
Lucene
#mvpconf
Cenários de uso:
Hoje em dias aplicativos oferecem diversos tipos conteúdo para seus
usuários. Os usuários serão mais eficientes se pesquisarem o
conteúdo que desejam do que em vez de navegar até achar o
conteúdo
• E-Commerce
• Sites de Aluguel de Carros e Afins
• Intranet, Extranet
#mvpconf
#mvpconf
WORKFLOW TIPICO DO AZURE SEARCH
#mvpconf
Provisionamento (“Provisioning”)
• Gerenciamento do Serviço de Busca pelo Azure Portal
• Autenticação
• Capacidade
• Região
• Definição e Gerência dos Indices
• Escalabilidade
• Replicação
• Particionamento
• Definição do Service name -> Url Root da Api
• Ex: http://mysearch.search.windows.net
#mvpconf
Indices (“Search Index”)
• Criado no portal
• Um container de documentos pesquisáveis
• Tem um schema definido de dados
• Pode-ser habilitar CORS
• Index Name -> API URL
• Ex: http://mysearch.search.windows.net/indexes/myindex
• Schema
• Definição de campos como: nome, data type e se é chave
#mvpconf
Index Schema -> Lista de atributos (campos) do indice e suas
configurações
• Data Type:
• string, int, double, datetime, boolean, geo-point
• Pode ser um valor simples ou mesmo uma coleção
• Para cada atributo, podemos usar as opções:
• Search
• Suggestions
• Filters
• Sorting
• Facets
• Results
#mvpconf
API - Criar um indice
PUT /indexes/places?api-version=[api-version]
Host: demo.search.windows.net
api-key:[api-key]
Content-Type: application/json
{
"fields": [
{ "name": "key", "type": "Edm.String", "key": true },
{ "name": "name", "type": "Edm.String", "facetable": false },
{ "name": "class", "type": "Edm.String" },
...
],
"corsOptions": { "allowedOrigins": ["*"] }
}
#mvpconf
Indexação (“Index Data”)
• Grave seus dados no Indice usando a API
• POST to /indexes/<name>/docs/index
• Até 1000 operações por batch
• Ações podem ser upload, merge ou exclusão
• Aponte o Indice para seu banco de dados
• Azure SQL DB ou DocumentDB
• Detecção automatica de mudanças e exclusão
• Definição de politicas de buscas
#mvpconf
API – Upload de Documento
POST indexes/places/docs/index?api-version=[api-version]
Host: demo.search.windows.net
api-key: [api-key]
Content-Type: application/json
{ "value": [
{
"@search.action": "upload",
"key": "1502914",
"name": "Penny Creek",
"class": "Stream",
},
] }
#mvpconf
Pesquisa (“Search”)
Toda pesquisa é baseada em cima do Indice
A API de busca do Azure Search oferece inumeras opções como:
• Full-text Search
• Filtros, Ordenações, Paginações e Projeções
• Facetas
• Highlights
• Resultado:
• Atributos do Indice
• Score (Quanto maior o Score mais assertive é o
documento)
#mvpconf
API – Search
Simple Search:
docs?search=my search text
Filter:
docs?search=ridge&$filter=class eq 'Trail'
Search com sorting, paging, field selection:
docs?search=ridge&$orderby=rating desc&$top=5&$select=name,class
#mvpconf
Sugestão (“Search Suggestions”)
• Sugestão é utilizado para campos auto-complete
• Um texto parcial -> Gera uma lista de sugestão
• Executado conforme o usuário vai digitando o texto
• Deve ser habilitado na criação do atributo do Indice
#mvpconf
API – Suggestion
Simple suggestions:
docs/suggest?search=ridg
Combined com filtro:
docs/suggest?search=ridg&$filter=class eq 'Trail'
Com sorting, paging, field selection:
docs/suggest?search=ridg&$orderby=rating desc&$top=5
&$select=name,class
#mvpconf
Score Profile e Field Weights – “Tuning”
• Por padrão o score de uma busca é baseado na relevância do
texto encontrado no documento
• Você pode criar profile de score para melhorar o resultado:
• Adicionando peso aos atributos
• Criando funções de Scoring
• Você pode criar diversos Scores Profiles para ser usado em
diferentes cenários
#mvpconf
API – Index Definition Field Weights
{
"fields": [ … ], "corsOptions": { … },
"scoringProfiles": [
{
"name": "myProfile",
"text": {
"weights": {
"county": 2,
“class”: 2
}
},
"functions": [ … ]
}
]
}
#mvpconf
API – Index Definition Scoring Functions
{
"type": "magnitude",
"boost": 2,
"fieldName": "rating",
"interpolation": "linear",
"magnitude": {
"boostingRangeStart": 1,
"boostingRangeEnd": 5
}
}
Demo
Dúvidas ?
#mvpconf
Contatos
https://www.youtube.com/c/CanalCodersInRio
rafaelcruz.azurewebsites.net
https://www.linkedin.com/in/rafaelcruzmvp/
@rafaelcruz_net
Obrigado

Mais conteúdo relacionado

Semelhante a MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search

APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...
APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...
APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...Renato Groff
 
Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018
Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018
Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018Renato Groff
 
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDBMecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDBLuiz Duarte
 
TDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big DataTDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big Datatdc-globalcode
 
SQLCLR: Transformando o SQL Server em algo muito além de um banco de dados
SQLCLR: Transformando o SQL Server em algo muito além de um banco de dadosSQLCLR: Transformando o SQL Server em algo muito além de um banco de dados
SQLCLR: Transformando o SQL Server em algo muito além de um banco de dadosDirceu Resende
 
Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...
Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...
Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...Renato Groff
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBLuiz Duarte
 
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBJS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBiMasters
 
SQLCLR - Transformando seu SQL Server em algo muito além de um banco de dados
SQLCLR - Transformando seu SQL Server em algo muito além de um banco de dadosSQLCLR - Transformando seu SQL Server em algo muito além de um banco de dados
SQLCLR - Transformando seu SQL Server em algo muito além de um banco de dadosDirceu Resende
 
AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906Orlando Mariano
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Cloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BHCloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BHRenato Groff
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...iMasters
 
Azure Bootcamp - Azure App Service e Function com Linux e NodeJS
Azure Bootcamp - Azure App Service e Function com Linux e NodeJSAzure Bootcamp - Azure App Service e Function com Linux e NodeJS
Azure Bootcamp - Azure App Service e Function com Linux e NodeJSAlexandre Bolzon
 

Semelhante a MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search (20)

Mini curso rails 3
Mini curso rails 3Mini curso rails 3
Mini curso rails 3
 
APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...
APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...
APIs na nuvem: implementando soluções RESTful com o Microsoft Azure - Azure T...
 
Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018
Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018
Microsoft Azure para Desenvolvedores Web - Azure para Devs e DBAs - Maio-2018
 
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDBMecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
 
TDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big DataTDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big Data
 
Neo4j + nodejs
Neo4j + nodejsNeo4j + nodejs
Neo4j + nodejs
 
SQLCLR: Transformando o SQL Server em algo muito além de um banco de dados
SQLCLR: Transformando o SQL Server em algo muito além de um banco de dadosSQLCLR: Transformando o SQL Server em algo muito além de um banco de dados
SQLCLR: Transformando o SQL Server em algo muito além de um banco de dados
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...
Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...
Bancos de dados no Azure: conhecendo as opções relacionais e NoSQL disponívei...
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDB
 
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBJS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
 
SQLCLR - Transformando seu SQL Server em algo muito além de um banco de dados
SQLCLR - Transformando seu SQL Server em algo muito além de um banco de dadosSQLCLR - Transformando seu SQL Server em algo muito além de um banco de dados
SQLCLR - Transformando seu SQL Server em algo muito além de um banco de dados
 
AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5
 
Cloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BHCloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BH
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
 
Azure Bootcamp - Azure App Service e Function com Linux e NodeJS
Azure Bootcamp - Azure App Service e Function com Linux e NodeJSAzure Bootcamp - Azure App Service e Function com Linux e NodeJS
Azure Bootcamp - Azure App Service e Function com Linux e NodeJS
 

Mais de Rafael Cruz, MCT, MBA

A carreira de um desenvolvedor de software
A carreira de um desenvolvedor de softwareA carreira de um desenvolvedor de software
A carreira de um desenvolvedor de softwareRafael Cruz, MCT, MBA
 
TDC 2018 - Trilha .NET - Message broker azure service bus e azure functions
TDC 2018 - Trilha .NET - Message broker azure service bus e azure functionsTDC 2018 - Trilha .NET - Message broker azure service bus e azure functions
TDC 2018 - Trilha .NET - Message broker azure service bus e azure functionsRafael Cruz, MCT, MBA
 
AngularJs 1.x - Meetup - Coders In Rio
AngularJs 1.x  - Meetup - Coders In RioAngularJs 1.x  - Meetup - Coders In Rio
AngularJs 1.x - Meetup - Coders In RioRafael Cruz, MCT, MBA
 
Apresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e SeleniumApresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e SeleniumRafael Cruz, MCT, MBA
 
Novidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoNovidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoRafael Cruz, MCT, MBA
 

Mais de Rafael Cruz, MCT, MBA (7)

A carreira de um desenvolvedor de software
A carreira de um desenvolvedor de softwareA carreira de um desenvolvedor de software
A carreira de um desenvolvedor de software
 
TDC 2018 - Trilha .NET - Message broker azure service bus e azure functions
TDC 2018 - Trilha .NET - Message broker azure service bus e azure functionsTDC 2018 - Trilha .NET - Message broker azure service bus e azure functions
TDC 2018 - Trilha .NET - Message broker azure service bus e azure functions
 
Acesso a dados com dapper
Acesso a dados com dapperAcesso a dados com dapper
Acesso a dados com dapper
 
AngularJs 1.x - Meetup - Coders In Rio
AngularJs 1.x  - Meetup - Coders In RioAngularJs 1.x  - Meetup - Coders In Rio
AngularJs 1.x - Meetup - Coders In Rio
 
Apresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e SeleniumApresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e Selenium
 
Novidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoNovidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evolução
 
ASP.NET Core
ASP.NET CoreASP.NET Core
ASP.NET Core
 

MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search

  • 1. Edição 2018 #mvpconf Rafael Cruz Visual Studio and Development Technologies Pesquisa e Indexação de Documentos com Azure Search
  • 2. #mvpconf Palestrante Rafael Cruz Coders In Rio rafaelcruz.azurewebsites.net https://www.linkedin.com/in/rafaelcruzmvp/ @rafaelcruz_net Biografia Líder de Desenvolvimento na Icatu Seguros, desenvolvedor .NET há 14 anos, Most Valuable Profissional (MVP), Instrutor Oficial Microsoft (MCT), Fundador do Coders in Rio com mais de 1300 membros, adora compartilhar experiências na área de desenvolvimento Web, Aplicativos Móveis e Cloud Solutions
  • 3. #mvpconf Agenda • O que é Azure Search • Cenários de Uso • Provisionamento • Criação de Indice • Indexação • Pesquisa • Tuning • Exemplo • Dúvidas
  • 4. #mvpconf O que é Azure Search ? É uma solução de pesquisa na nuvem gerenciado e elástico que permitem que desenvolvedores incoporem pesquisas robustas nos aplicativos sem a preocupação em gerenciar uma infraestrutura complexa e nem precisar se tornar um experts em pesquisas. O Azure Search permite que você crie pesquisas usando sua API Rest ou o seu próprio SDK disponivel em diversas linguagens de programação. O Azure Search é baseado na engine de busca open source chamado Lucene
  • 5. #mvpconf Cenários de uso: Hoje em dias aplicativos oferecem diversos tipos conteúdo para seus usuários. Os usuários serão mais eficientes se pesquisarem o conteúdo que desejam do que em vez de navegar até achar o conteúdo • E-Commerce • Sites de Aluguel de Carros e Afins • Intranet, Extranet
  • 8. #mvpconf Provisionamento (“Provisioning”) • Gerenciamento do Serviço de Busca pelo Azure Portal • Autenticação • Capacidade • Região • Definição e Gerência dos Indices • Escalabilidade • Replicação • Particionamento • Definição do Service name -> Url Root da Api • Ex: http://mysearch.search.windows.net
  • 9. #mvpconf Indices (“Search Index”) • Criado no portal • Um container de documentos pesquisáveis • Tem um schema definido de dados • Pode-ser habilitar CORS • Index Name -> API URL • Ex: http://mysearch.search.windows.net/indexes/myindex • Schema • Definição de campos como: nome, data type e se é chave
  • 10. #mvpconf Index Schema -> Lista de atributos (campos) do indice e suas configurações • Data Type: • string, int, double, datetime, boolean, geo-point • Pode ser um valor simples ou mesmo uma coleção • Para cada atributo, podemos usar as opções: • Search • Suggestions • Filters • Sorting • Facets • Results
  • 11. #mvpconf API - Criar um indice PUT /indexes/places?api-version=[api-version] Host: demo.search.windows.net api-key:[api-key] Content-Type: application/json { "fields": [ { "name": "key", "type": "Edm.String", "key": true }, { "name": "name", "type": "Edm.String", "facetable": false }, { "name": "class", "type": "Edm.String" }, ... ], "corsOptions": { "allowedOrigins": ["*"] } }
  • 12. #mvpconf Indexação (“Index Data”) • Grave seus dados no Indice usando a API • POST to /indexes/<name>/docs/index • Até 1000 operações por batch • Ações podem ser upload, merge ou exclusão • Aponte o Indice para seu banco de dados • Azure SQL DB ou DocumentDB • Detecção automatica de mudanças e exclusão • Definição de politicas de buscas
  • 13. #mvpconf API – Upload de Documento POST indexes/places/docs/index?api-version=[api-version] Host: demo.search.windows.net api-key: [api-key] Content-Type: application/json { "value": [ { "@search.action": "upload", "key": "1502914", "name": "Penny Creek", "class": "Stream", }, ] }
  • 14. #mvpconf Pesquisa (“Search”) Toda pesquisa é baseada em cima do Indice A API de busca do Azure Search oferece inumeras opções como: • Full-text Search • Filtros, Ordenações, Paginações e Projeções • Facetas • Highlights • Resultado: • Atributos do Indice • Score (Quanto maior o Score mais assertive é o documento)
  • 15. #mvpconf API – Search Simple Search: docs?search=my search text Filter: docs?search=ridge&$filter=class eq 'Trail' Search com sorting, paging, field selection: docs?search=ridge&$orderby=rating desc&$top=5&$select=name,class
  • 16. #mvpconf Sugestão (“Search Suggestions”) • Sugestão é utilizado para campos auto-complete • Um texto parcial -> Gera uma lista de sugestão • Executado conforme o usuário vai digitando o texto • Deve ser habilitado na criação do atributo do Indice
  • 17. #mvpconf API – Suggestion Simple suggestions: docs/suggest?search=ridg Combined com filtro: docs/suggest?search=ridg&$filter=class eq 'Trail' Com sorting, paging, field selection: docs/suggest?search=ridg&$orderby=rating desc&$top=5 &$select=name,class
  • 18. #mvpconf Score Profile e Field Weights – “Tuning” • Por padrão o score de uma busca é baseado na relevância do texto encontrado no documento • Você pode criar profile de score para melhorar o resultado: • Adicionando peso aos atributos • Criando funções de Scoring • Você pode criar diversos Scores Profiles para ser usado em diferentes cenários
  • 19. #mvpconf API – Index Definition Field Weights { "fields": [ … ], "corsOptions": { … }, "scoringProfiles": [ { "name": "myProfile", "text": { "weights": { "county": 2, “class”: 2 } }, "functions": [ … ] } ] }
  • 20. #mvpconf API – Index Definition Scoring Functions { "type": "magnitude", "boost": 2, "fieldName": "rating", "interpolation": "linear", "magnitude": { "boostingRangeStart": 1, "boostingRangeEnd": 5 } }
  • 21. Demo