SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Mecanismo de busca com .NET
Core + MongoDB
Apresentação
Conceitos Fundamentais
MongoDB
.NET Core
Referências
Dúvidas
Cronograma
Ciência da Computação
Computação Móvel
Dev, analista, gerente...
11 anos programando
- 7 anos com mecanismos de busca
- 3 buscadores no ar
- inúmeros projetos
Conceitos Fundamentais
Fonte de Dados
Classificação
Indexação
Pesquisa
Atualização
Conceitos
Fundamentais
1. Fonte de
Dados
- Carga de dados
- crawling
- SQL
2. Classificação
- redes neurais
- machine learning
- rankings
- NoSQL?
3. Indexação
- normalização
- tagging
- inverted index
- stopwords, sinônimos
- NoSQL!
4. Pesquisa
- normalização
- tagging
- inverted index
- stopwords, sinônimos
- resultados
5. Atualização
- index rebuild?
- live update?
- Redis…
- MongoDB!
MongoDB
MongoDB
Onde baixo?
http://mongodb.org
O que mais vou precisar?
GUI Mongo: http://studio3t.com (opcional)
- free
- tenha RAM de sobra
- orientado a documentos
- schemaless
- array fields
- indexed array fields
MongoDB
Subindo servidor:
$ cd C:mongobin
$ mongod --dbpath C:dotnetprojectsbuscadordata
MongoDB
Subindo o cliente:
C:mongobin> mongo
MongoDB
Carga de dados:
use searchengine
custArray = [{"Nome":"Luiz Júnior", "Profissao":"Professor",
"Tags":["LUIZ","JUNIOR","PROFESSOR"]}, {"Nome":"Luiz
Fernando", "Profissao":"Autor", "Tags":
["LUIZ","FERNANDO","AUTOR"]}, {"Nome":"Luiz Tools",
"Profissao":"Blogueiro", "Tags":
["LUIZ","TOOLS","BLOGUEIRO"]}, {"Nome":"Luiz Duarte",
"Profissao":"Blogueiro", "Tags":
["LUIZ","DUARTE","BLOGUEIRO"]}]
db.Customer.insert(custArray);
MongoDB
Índice:
db.Customer.createIndex({"Tags":1});
.NET Core
.NET Core
Vantagens:
multiplataforma, veloz, escala, velocidade e baixo custo, C#
Desvantagens:
imaturidade, falta muita biblioteca ainda
.NET Core
Onde baixo?
https://www.microsoft.com/net/core
Como verifico se está funcionando?
dotnet --version
O que mais vou precisar?
Visual Studio Community (opcional)
https://www.visualstudio.com/pt-br/downloads/
.NET Core
Criando o projeto:
.NET Core
customizando shared/_Layout.cshtml:
<li><a asp-area="" asp-controller="Home" asp-action="Search">Search</a></li>
customizando Views/Home/Search.cshtml:
<div class="row" style="margin-top: 20px">
<form method="GET" action="/Home/Search">
<p><label>Pesquisa: <input type="text" name="q" /></label></p>
<p><input type="submit" value="Pesquisar" class="btn btn-primary" /></p>
</form>
</div>
.NET Core
Dependência MongoDB:
.NET Core
customizando Models/Customer.cs:
public class Customer
{
[BsonId]
public ObjectId Id { get; set; }
[BsonRequired]
[BsonElement("Nome")]
public string Nome { get; set; }
public string Profissao { get; set; }
public List<string> Tags { get; set; }
}
.NET Core
customizando Models/DataAccess.cs:
public class DataAccess
{
MongoClient _client;
IMongoDatabase _db;
public DataAccess()
{
_client = new MongoClient("mongodb://localhost:27017");
_db = _client.GetDatabase("searchengine");
}
public long CountCustomers(){
return _db.GetCollection<Customer>(typeof(Customer).Name).Count(new
FilterDefinitionBuilder<Customer>().Empty);
}
.NET Core
Teste para ver se funciona:
// HomeController.cs
public IActionResult Search()
{
ViewData["Message"] = "Search page.";
ViewData["Count"] = new DataAccess().CountCustomers();
return View();
}
<!-- Search.cshtml -->
<p>@Html.Raw(ViewData["Count"]) clientes cadastrados!</p>
.NET Core
customizando Models/DataAccess.cs:
public IEnumerable<Customer> GetCustomers(string query)
{
var tags = query.ToUpper().Split(new string[] { " " },
StringSplitOptions.RemoveEmptyEntries).ToList();
var filter = Builders<Customer>.Filter.All(c => c.Tags, tags);
return
_db.GetCollection<Customer>(typeof(Customer).Name).Find(filter).ToList();
}
.NET Core
customizando HomeController.cs:
public IActionResult Search(String q)
{
ViewData["Message"] = "Search page.";
var da = new DataAccess();
ViewData["Count"] = da.CountCustomers();
if(!String.IsNullOrEmpty(q))
{
return View(da.GetCustomers(q));
}
return View();
}
.NET Core
customizando Search.cshtml:
<hr />
@if(Model != null)
{
<ul>
@foreach(var item in Model)
{
<li>@Html.DisplayFor(modelItem => item.Nome)</li>
}
</ul>
}
Referências
Dúvidas?
Obrigado!

Contenu connexe

Tendances

Tendances (20)

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
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Minicurso code igniter aula 2
Minicurso code igniter   aula 2Minicurso code igniter   aula 2
Minicurso code igniter aula 2
 
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.jsDesenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)
 
Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java script
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
Curso de Node.js e MongoDB - 06
Curso de Node.js e MongoDB - 06Curso de Node.js e MongoDB - 06
Curso de Node.js e MongoDB - 06
 
Urls amigáveis em JavaScript com Sammy JS
Urls amigáveis em JavaScript com Sammy JSUrls amigáveis em JavaScript com Sammy JS
Urls amigáveis em JavaScript com Sammy JS
 

Similaire à Mecanismo de busca .NET Core + MongoDB

O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
introfini
 

Similaire à Mecanismo de busca .NET Core + MongoDB (20)

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
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Quick Form DataBase (QFDB)
Quick Form DataBase (QFDB)Quick Form DataBase (QFDB)
Quick Form DataBase (QFDB)
 
Search Plugins para Firefox
Search Plugins para FirefoxSearch Plugins para Firefox
Search Plugins para Firefox
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geral
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHP
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Metodologia e Etapas SEO, ADWORDS, FACEBOOK
Metodologia e Etapas SEO, ADWORDS, FACEBOOKMetodologia e Etapas SEO, ADWORDS, FACEBOOK
Metodologia e Etapas SEO, ADWORDS, FACEBOOK
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.js
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 

Plus de Luiz Duarte

Plus de Luiz Duarte (20)

Mecanismo de busca em Node.js e MongoDB
Mecanismo de busca em Node.js e MongoDBMecanismo de busca em Node.js e MongoDB
Mecanismo de busca em Node.js e MongoDB
 
FDP, DEEP, INVEST e SMART: entendendo a sopa de letrinhas que todo PO deve co...
FDP, DEEP, INVEST e SMART: entendendo a sopa de letrinhas que todo PO deve co...FDP, DEEP, INVEST e SMART: entendendo a sopa de letrinhas que todo PO deve co...
FDP, DEEP, INVEST e SMART: entendendo a sopa de letrinhas que todo PO deve co...
 
Team Building: Passo a Passo
Team Building: Passo a PassoTeam Building: Passo a Passo
Team Building: Passo a Passo
 
Curso Scrum e Métodos Ágeis 07
Curso Scrum e Métodos Ágeis 07Curso Scrum e Métodos Ágeis 07
Curso Scrum e Métodos Ágeis 07
 
Curso Scrum e Métodos Ágeis 04
Curso Scrum e Métodos Ágeis 04Curso Scrum e Métodos Ágeis 04
Curso Scrum e Métodos Ágeis 04
 
Curso Scrum e Métodos Ágeis 02
Curso Scrum e Métodos Ágeis 02Curso Scrum e Métodos Ágeis 02
Curso Scrum e Métodos Ágeis 02
 
Curso Scrum e Métodos Ágeis 03
Curso Scrum e Métodos Ágeis 03Curso Scrum e Métodos Ágeis 03
Curso Scrum e Métodos Ágeis 03
 
Curso Scrum e Métodos Ágeis - Introdução
Curso Scrum e Métodos Ágeis - IntroduçãoCurso Scrum e Métodos Ágeis - Introdução
Curso Scrum e Métodos Ágeis - Introdução
 
Curso Scrum e Métodos Ágeis 01
Curso Scrum e Métodos Ágeis 01Curso Scrum e Métodos Ágeis 01
Curso Scrum e Métodos Ágeis 01
 
Curso Scrum e Métodos Ágeis 05
Curso Scrum e Métodos Ágeis 05Curso Scrum e Métodos Ágeis 05
Curso Scrum e Métodos Ágeis 05
 
Curso Scrum e Métodos Ágeis 06
Curso Scrum e Métodos Ágeis 06Curso Scrum e Métodos Ágeis 06
Curso Scrum e Métodos Ágeis 06
 
Carreira em Agilidade
Carreira em AgilidadeCarreira em Agilidade
Carreira em Agilidade
 
Gamification em Modelos de Maturidade
Gamification em Modelos de MaturidadeGamification em Modelos de Maturidade
Gamification em Modelos de Maturidade
 
Curso de Node.js e MongoDB - 20
Curso de Node.js e MongoDB - 20Curso de Node.js e MongoDB - 20
Curso de Node.js e MongoDB - 20
 
Curso de Node.js e MongoDB - 19
Curso de Node.js e MongoDB - 19Curso de Node.js e MongoDB - 19
Curso de Node.js e MongoDB - 19
 
Curso de Node.js e MongoDB - 18
Curso de Node.js e MongoDB - 18Curso de Node.js e MongoDB - 18
Curso de Node.js e MongoDB - 18
 
Curso de Node.js e MongoDB - 17
Curso de Node.js e MongoDB - 17Curso de Node.js e MongoDB - 17
Curso de Node.js e MongoDB - 17
 
Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16
 
Curso de Node.js e MongoDB - 15
Curso de Node.js e MongoDB - 15Curso de Node.js e MongoDB - 15
Curso de Node.js e MongoDB - 15
 
Curso de Node.js e MongoDB - 14
Curso de Node.js e MongoDB - 14Curso de Node.js e MongoDB - 14
Curso de Node.js e MongoDB - 14
 

Mecanismo de busca .NET Core + MongoDB