Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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 ...
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 R...
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","JUNI...
MongoDB
Índice:
db.Customer.createIndex({"Tags":1});
.NET Core
.NET Core
Vantagens:
multiplataforma, veloz, escala, velocidade e baixo custo, C#
Desvantagens:
imaturidade, falta muita b...
.NET Core
Onde baixo?
https://www.microsoft.com/net/core
Como verifico se está funcionando?
dotnet --version
O que mais vo...
.NET Core
Criando o projeto:
.NET Core
customizando shared/_Layout.cshtml:
<li><a asp-area="" asp-controller="Home" asp-action="Search">Search</a></li>...
.NET Core
Dependência MongoDB:
.NET Core
customizando Models/Customer.cs:
public class Customer
{
[BsonId]
public ObjectId Id { get; set; }
[BsonRequired...
.NET Core
customizando Models/DataAccess.cs:
public class DataAccess
{
MongoClient _client;
IMongoDatabase _db;
public Dat...
.NET Core
Teste para ver se funciona:
// HomeController.cs
public IActionResult Search()
{
ViewData["Message"] = "Search p...
.NET Core
customizando Models/DataAccess.cs:
public IEnumerable<Customer> GetCustomers(string query)
{
var tags = query.To...
.NET Core
customizando HomeController.cs:
public IActionResult Search(String q)
{
ViewData["Message"] = "Search page.";
va...
.NET Core
customizando Search.cshtml:
<hr />
@if(Model != null)
{
<ul>
@foreach(var item in Model)
{
<li>@Html.DisplayFor(...
Referências
Dúvidas?
Obrigado!
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
Upcoming SlideShare
Loading in …5
×

Mecanismo de busca .NET Core + MongoDB

5,816 views

Published on

Palestra sobre como criar um mecanismo de busca usando as tecnologias ASP.NET Core e MongoDB. Transcript em luiztools.com.br

Published in: Software
  • Be the first to comment

Mecanismo de busca .NET Core + MongoDB

  1. 1. Mecanismo de busca com .NET Core + MongoDB
  2. 2. Apresentação Conceitos Fundamentais MongoDB .NET Core Referências Dúvidas Cronograma
  3. 3. 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
  4. 4. Conceitos Fundamentais
  5. 5. Fonte de Dados Classificação Indexação Pesquisa Atualização Conceitos Fundamentais
  6. 6. 1. Fonte de Dados - Carga de dados - crawling - SQL
  7. 7. 2. Classificação - redes neurais - machine learning - rankings - NoSQL?
  8. 8. 3. Indexação - normalização - tagging - inverted index - stopwords, sinônimos - NoSQL!
  9. 9. 4. Pesquisa - normalização - tagging - inverted index - stopwords, sinônimos - resultados
  10. 10. 5. Atualização - index rebuild? - live update? - Redis… - MongoDB!
  11. 11. MongoDB
  12. 12. 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
  13. 13. MongoDB Subindo servidor: $ cd C:mongobin $ mongod --dbpath C:dotnetprojectsbuscadordata
  14. 14. MongoDB Subindo o cliente: C:mongobin> mongo
  15. 15. 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);
  16. 16. MongoDB Índice: db.Customer.createIndex({"Tags":1});
  17. 17. .NET Core
  18. 18. .NET Core Vantagens: multiplataforma, veloz, escala, velocidade e baixo custo, C# Desvantagens: imaturidade, falta muita biblioteca ainda
  19. 19. .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/
  20. 20. .NET Core Criando o projeto:
  21. 21. .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>
  22. 22. .NET Core Dependência MongoDB:
  23. 23. .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; } }
  24. 24. .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); }
  25. 25. .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>
  26. 26. .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(); }
  27. 27. .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(); }
  28. 28. .NET Core customizando Search.cshtml: <hr /> @if(Model != null) { <ul> @foreach(var item in Model) { <li>@Html.DisplayFor(modelItem => item.Nome)</li> } </ul> }
  29. 29. Referências
  30. 30. Dúvidas?
  31. 31. Obrigado!

×