Este documento apresenta uma palestra sobre pesquisa e indexação de documentos com Azure Search. A palestra inclui uma introdução ao Azure Search, cenários de uso, provisionamento, criação de índices, indexação, pesquisa, tuning e um exemplo prático. O palestrante também disponibiliza seus contatos para possíveis dúvidas.
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
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
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