SlideShare uma empresa Scribd logo
1 de 33
SAAS - Search as a Service
Leandro Pereira Pinto
Um pouco sobre mim...
● Fatec São Caetano do Sul, turma de 2007.
● +7 anos de experiência em Desenvolvimento
● +3 anos de experiência em Busca
● Casado com a Michelle
● Duas filhas, a Manuella e a Antonella 2
Agenda
1. Problemas Comuns e Desafios na Busca
2. Search Engines
3. Visão Macro de uma Arquitetura de Busca
4. Indexando Documentos
5. Relevância 3
Problemas Comuns e
Desafios na Busca
4
Problemas Comuns e Desafios na Busca
● Erros de Cadastro/Taxonomia
● Mesmos SKUs para ofertas diferentes
● Filtros por tamanho e cor
● Busca em campos descritivos
● Tempo para os produtos aparecerem no resultado 5
6
7
Search Engines
(Motores de Busca)
8
Search Engines
● Open Source
● Apache License, v 2.0
● Apache Lucene
● Cloud
9
Search Engines
● Master/Slaves (não Solr Cloud)
● Shards/Replicas (Solr Cloud)
● Solr Admin
● Shards/Replicas
● DSL Queries
● Kibana
10
11
Search Engines
[DB-Engines]
Visão Macro de uma Arquitetura
de Busca
12
Visão Macro de uma Arquitetura de Busca
13
Indexando Documentos
14
Indexando Documentos
API
● Normalizar dados
● Enriquecimento de
informações
● Coleta de métricas de
Search Engine
● Configurar índices
● Configurar mapping/schema
● Template para criação de
índices
15
template/
{
"template": "index-prefix*",
"settings": {
[...]
},
"mappings": {
"index-name-prefix": {
[...]
}
}
}
16
Configurando Template
settings/index "settings": {
"index": {
"number_of_shards": "8",
"number_of_replicas": "2",
"refresh_interval": "300s",
"analysis": {
[...]
}
}
}
17
Configurando Template
settings/index/analysis
"filter": {
"stopwords": {
"type": "stop",
"stopwords": [ "de" ]
},
"synonym": {
"type": "synonym",
"synonyms": [
"i-pod, i pod => ipod" ]
},
"brazilian_stemmer": {
"type": "stemmer",
"language": "brazilian"
}
}
18
Configurando Template
settings/index/analysis
"analyzer": {
"searchable_text": {
"filter": [
"word_delimiter",
"lowercase",
"asciifolding",
"stopwords",
"synonym",
"brazilian_stemmer"
],
"tokenizer": "standard"
}
}
19
Configurando Template
mapping/index-prefix/
"dynamic_templates": [
{
"strings": {
"mapping": {
"type": "keyword",
"fields": {
"text": {
"type": "text"
}
}
},
"match_mapping_type":
"string"
}
}
]
20
Configurando Template
mapping/index-prefix/
"properties": {
"title": {
"type": "text",
"analyzer": "searchable_text"
},
"timestamp": {
"type": "date",
"format":
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
}
}
21
Configurando Template
Relevância
22
Relevância
Pode ser equalizada baseada em pesos distintos para:
● Popularidade
● Venda
● Avaliação do Seller
● Review/Rate
● Número de vezes em que aparece no resultado de busca x número de pageviews gerado
● etc.
Score
23
Ingest Pipeline
24
Ingest Pipeline
● Funciona como uma espécie de Trigger
● É ativada sempre que um documento é inserido
25
26
Ingest Pipeline - Elasticsearch
27
ADD Document 1
GET Document 1
Ingest Pipeline - Elasticsearch
Buscando Documentos
28
● Geolocalizadas
● Nested
● Ranges
● Querystring
● Filtros
● Agregação
● Ordenação
Buscando Documentos - Serviços Comuns
29
● Para Facets, evite utilização de campos de textos analisados.
● Evite permitir buscas em campos descritivos.
● Para buscas paginadas, prefira utilizar ponteiros.
Buscando Documentos - Cuidados
30
● Colete métricas das pesquisas.
● Pode ser utilizado Engine de Regras.
● Mantenha o cluster monitorado.
Buscando Documentos - Dicas
31
Fontes
https://db-engines.com/en/ranking_trend/search+engine
http://solr-vs-elasticsearch.com/
https://www.elastic.co/blog
http://lucene.apache.org/solr/guide/6_6/
https://www.elastic.co/guide/index.html
32
Obrigado!
● Sobre o que falamos:
○ Principais problemas encontrados
○ Projeto de arquitetura básico de uma stack de busca
○ Configurando índices e gerenciando nosso mapping/schema
○ Como melhorar a relevância do resultado de busca
Leandro Pereira Pinto
skype: pereirapleandro
+55 11 96075-7922
pereirapleandro@gmail.com
33

Mais conteúdo relacionado

Semelhante a SAAS Search as a Service

MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchMichel Bottan
 
pgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQLpgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQLRaphael Silva
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
CV - Andre De Conto Matter
CV - Andre De Conto MatterCV - Andre De Conto Matter
CV - Andre De Conto MatterAndre Matter
 
Banco de dados Aula 1
Banco de dados Aula 1Banco de dados Aula 1
Banco de dados Aula 1Bruno Strik
 
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaTime de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaDeblyn Prado
 
TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...tdc-globalcode
 
Styles reaproveitáveis no Xamarin.Forms - TDC 2017
Styles reaproveitáveis no Xamarin.Forms - TDC 2017Styles reaproveitáveis no Xamarin.Forms - TDC 2017
Styles reaproveitáveis no Xamarin.Forms - TDC 2017Letticia Nicoli
 
Ferramentas de Apoio para Developers .NET e SQL Server
Ferramentas de Apoio para Developers .NET e SQL ServerFerramentas de Apoio para Developers .NET e SQL Server
Ferramentas de Apoio para Developers .NET e SQL ServerComunidade NetPonto
 
Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web
Utilizando Machine Learning e Java para classificar o conteúdo de páginas WebUtilizando Machine Learning e Java para classificar o conteúdo de páginas Web
Utilizando Machine Learning e Java para classificar o conteúdo de páginas WebJoel Pinho Lucas
 
Workshop google analytics
Workshop google analyticsWorkshop google analytics
Workshop google analyticsEricson Mattoso
 
B2B no Mercado Eletrônico: Do SaaS ao PaaS
B2B no Mercado Eletrônico: Do SaaS ao PaaSB2B no Mercado Eletrônico: Do SaaS ao PaaS
B2B no Mercado Eletrônico: Do SaaS ao PaaSRicardo Pardini
 
Lidando com dados de financiamento de campanha em SQL
Lidando com dados de financiamento de campanha em SQLLidando com dados de financiamento de campanha em SQL
Lidando com dados de financiamento de campanha em SQLadrianobf88
 

Semelhante a SAAS Search as a Service (20)

Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted Search
 
pgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQLpgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQL
 
Metadados - Totvs RM.pdf
Metadados - Totvs RM.pdfMetadados - Totvs RM.pdf
Metadados - Totvs RM.pdf
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
CV - Andre De Conto Matter
CV - Andre De Conto MatterCV - Andre De Conto Matter
CV - Andre De Conto Matter
 
Banco de dados Aula 1
Banco de dados Aula 1Banco de dados Aula 1
Banco de dados Aula 1
 
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaTime de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
 
SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python
 
Félix do Carmo e Luís Trigo - Tradutores e máquinas de tradução
Félix do Carmo e Luís Trigo - Tradutores e máquinas de traduçãoFélix do Carmo e Luís Trigo - Tradutores e máquinas de tradução
Félix do Carmo e Luís Trigo - Tradutores e máquinas de tradução
 
TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha Xamarin How we figured out we had a SRE team at ...
 
Styles reaproveitáveis no Xamarin.Forms - TDC 2017
Styles reaproveitáveis no Xamarin.Forms - TDC 2017Styles reaproveitáveis no Xamarin.Forms - TDC 2017
Styles reaproveitáveis no Xamarin.Forms - TDC 2017
 
Ferramentas de Apoio para Developers .NET e SQL Server
Ferramentas de Apoio para Developers .NET e SQL ServerFerramentas de Apoio para Developers .NET e SQL Server
Ferramentas de Apoio para Developers .NET e SQL Server
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web
Utilizando Machine Learning e Java para classificar o conteúdo de páginas WebUtilizando Machine Learning e Java para classificar o conteúdo de páginas Web
Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
 
Workshop google analytics
Workshop google analyticsWorkshop google analytics
Workshop google analytics
 
B2B no Mercado Eletrônico: Do SaaS ao PaaS
B2B no Mercado Eletrônico: Do SaaS ao PaaSB2B no Mercado Eletrônico: Do SaaS ao PaaS
B2B no Mercado Eletrônico: Do SaaS ao PaaS
 
Lidando com dados de financiamento de campanha em SQL
Lidando com dados de financiamento de campanha em SQLLidando com dados de financiamento de campanha em SQL
Lidando com dados de financiamento de campanha em SQL
 

SAAS Search as a Service

Notas do Editor

  1. Agradecimento a Dafiti pelo convite e ao VivaReal pelo consentimento e encorajamento em realizar esta apresentação, inclusive permitindo abrir detalhes técnicos utilizados na empresa, se necessário.
  2. (Scrool no ES e CursorMark no Solr)