mecanismo de busca com node.js + mongodb
TRANSCRIPT
![Page 1: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/1.jpg)
![Page 2: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/2.jpg)
![Page 3: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/3.jpg)
Mecanismo de busca com MongoDB
![Page 4: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/4.jpg)
Apresentação
Conceitos Fundamentais
MongoDB
Node.js
Referências
Dúvidas
Cronograma
![Page 5: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/5.jpg)
Ciência da Computação
Computação Móvel
Dev, analista, gerente...
11 anos programando
- 7 anos com mecanismos de busca
- 3 mecanismos no ar
- inúmeros projetos
![Page 6: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/6.jpg)
![Page 7: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/7.jpg)
![Page 8: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/8.jpg)
![Page 9: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/9.jpg)
Conceitos Fundamentais
![Page 10: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/10.jpg)
Fonte de Dados
Classificação
Indexação
Pesquisa
AtualizaçãoConceitos
Fundamentais
![Page 11: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/11.jpg)
1. Fonte de Dados
- Carga de dados
- crawling
- SQL
![Page 12: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/12.jpg)
2. Classificação
- redes neurais
- machine learning
- rankings
- NoSQL?
![Page 13: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/13.jpg)
![Page 14: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/14.jpg)
3. Indexação
- normalização
- tagging
- inverted index
- stopwords, sinônimos
- NoSQL!
![Page 15: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/15.jpg)
![Page 16: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/16.jpg)
4. Pesquisa
- normalização
- tagging
- inverted index
- stopwords, sinônimos
- resultados
![Page 17: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/17.jpg)
5. Atualização
- index rebuild?
- live update?
- Redis…
- MongoDB!
![Page 18: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/18.jpg)
MongoDB
![Page 19: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/19.jpg)
![Page 20: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/20.jpg)
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
![Page 21: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/21.jpg)
MongoDB
Subindo servidor:
C:\mongo\bin> mongod --dbpath C:\nodejs\searchengine\data
Applications/mongo/bin> ./mongod --dbpath
/Users/luizfduartejr/nodejs/searchengine/data
![Page 22: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/22.jpg)
![Page 23: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/23.jpg)
MongoDB
Subindo o cliente:
C:\mongo\bin> mongo
Applications/mongo/bin> ./mongo
![Page 24: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/24.jpg)
![Page 25: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/25.jpg)
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.customers.insert(custArray);
![Page 26: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/26.jpg)
![Page 27: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/27.jpg)
MongoDB
Índice:
db.customers.createIndex({"tags":1});
![Page 28: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/28.jpg)
![Page 29: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/29.jpg)
Node.js
![Page 30: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/30.jpg)
Node.js
Vantagens:multiplataforma, veloz, escala, velocidade e baixo custo, web
full-stack, assíncrono, V8 Engine, Javascript
Desvantagens:single thread, Javascript
Cenários de Usos:APIs, bots, mensageria, real-time, games, collaboration tools
![Page 31: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/31.jpg)
Node.js
Quem usa?Netflix, PayPal, LinkedIn, Groupon, Dow Jones, GoDaddy, 4all, etc
Tecnologias Concorrentes:Go, Elixir e Scala
![Page 32: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/32.jpg)
![Page 33: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/33.jpg)
Node.js
Onde baixo?http://nodejs.org
Como verifico se está funcionando?node -v
O que mais vou precisar?sudo npm install -g express
sudo npm i -g express-generator
![Page 34: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/34.jpg)
Node.js
Criando um projeto Express:C:\nodejs> express searchengine
Executando um projeto Express:C:\nodejs\searchengine> npm start
Acessando um projeto Express:http://localhost:3000
![Page 35: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/35.jpg)
![Page 36: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/36.jpg)
Node.js
Estrutura de pastas:bin, node_modules, public, routes e views.
Arquivos importantes:bin/www, app.js e packages.json
Objetos importantes:app, http, server
![Page 37: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/37.jpg)
Node.js
Instalando dependência do EJS:C:\nodejs\searchengine> npm i -S ejs
Configurando a view engine:- alterar app.js
- renomear views para .ejs
- escrever HTML
![Page 38: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/38.jpg)
Node.js
index.ejs:
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<center>
<h1> Search Engine </h1>
<form action="/search" method="get">
<input type="text" name="query" />
<input type="submit" value="Search" />
</form>
</center>
</body>
</html>
![Page 39: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/39.jpg)
![Page 40: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/40.jpg)
Node.js
index.ejs:
<% if(results && list.length > 0){ %>
<b>Resultados da pesquisa por <%= search %>:</b>
<ul>
<% list.forEach(function(item){ %>
<li><%= item.nome %> (<%= item.profissao%>)</li>
<% }); %>
</ul>
<% } else{ %>
<b>Nenhum resultado encontrado para <%= search %></b>
<% } %>
![Page 41: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/41.jpg)
Node.js
index.js:
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { results: false });
});
![Page 42: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/42.jpg)
Node.js
index.js:
/* GET search page. */
router.get('/search', function (req, res, next) {
var searchParams = req.query.query.toUpperCase().split(' ');
var db = require('../db');
var Customer = db.Mongoose.model('customers',
db.CustomerSchema, 'customers');
Customer.find({ tags: { $all: searchParams } }, function (e, docs) {
res.render('index', { results: true, search: req.query.query, list:
docs });
});
});
![Page 43: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/43.jpg)
![Page 44: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/44.jpg)
![Page 45: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/45.jpg)
Referências
![Page 46: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/46.jpg)
![Page 47: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/47.jpg)
![Page 48: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/48.jpg)
![Page 49: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/49.jpg)
Dúvidas?
![Page 50: Mecanismo de Busca com Node.js + MongoDB](https://reader034.vdocuments.mx/reader034/viewer/2022050806/58f054991a28abc4458b4609/html5/thumbnails/50.jpg)
Obrigado!