SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Mecanismo de busca com
Node.js + MongoDB
Apresentação
Conceitos Fundamentais
MongoDB
Node.js
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 mecanismos 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:
C:mongobin> mongod --dbpath C:nodejssearchenginedata
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.customers.insert(custArray);
MongoDB
Índice:
db.customers.createIndex({"tags":1});
Node.js
Node.js
Vantagens:
multiplataforma, veloz, escala, velocidade e baixo custo, web
full-stack, assíncrono, V8 Engine, Javascript
Desvantagens:
escalonamento vertical
Cenários de Usos:
APIs, bots, mensageria, real-time, games, collaboration tools
Node.js
Quem usa?
Netflix, PayPal, LinkedIn, Groupon, Dow Jones, GoDaddy, 4all, etc
Tecnologias Concorrentes:
Go, Elixir e Scala
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 install -g express-generator
Visual Studio Code (opcional)
https://code.visualstudio.com/download
Node.js
Criando um projeto Express:
C:nodejssearchengine> express -e --git
Executando um projeto Express:
npm install
npm start
Acessando um projeto Express:
http://localhost:3000
Node.js
customizando index.ejs:
<center>
<h1> Search Engine </h1>
<form action="/search" method="get">
<input type="text" name="query" />
<input type="submit" value="Search" />
</form>
</center>
Node.js
Dependência MongoDB:
npm install -S mongodb
Teste para ver se funciona:
router.get('/search', function (req, res, next) {
var db = require('mongodb');
db.connect("mongodb://localhost/searchengine")
.then(conn => console.log('funcionou!'))
.catch(err => console.log(err))
})
Node.js
customizando 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 if(search){ %>
<b>Nenhum resultado encontrado para <%= search %></b>
<% } %>
Node.js
customizando index.js /:
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', { results: false, list: [], search: '', title: 'SE' })
})
Node.js
customizando index.js /search:
/* GET search page. */
router.get('/search', function (req, res, next) {
var searchParams = req.query.query.toUpperCase().split(' ')
var db = require('mongodb')
db.connect('mongodb://localhost/searchengine2')
.then(conn => conn.collection('customers').find({ tags: { $all:
searchParams } }).toArray())
.then(docs => res.render('index', { results: true, search:
req.query.query, list: docs, title: 'SE' }))
.catch(err => console.log(err))
})
Referências
Dúvidas?
Obrigado!

Mais conteúdo relacionado

Mais procurados

Introduction to IBM Spectrum Scale and Its Use in Life Science
Introduction to IBM Spectrum Scale and Its Use in Life ScienceIntroduction to IBM Spectrum Scale and Its Use in Life Science
Introduction to IBM Spectrum Scale and Its Use in Life ScienceSandeep Patil
 
Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1Kazuyuki Ichikawa
 
Hadoop Administration pdf
Hadoop Administration pdfHadoop Administration pdf
Hadoop Administration pdfEdureka!
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編hdais
 
DNS移転失敗体験談
DNS移転失敗体験談DNS移転失敗体験談
DNS移転失敗体験談oheso tori
 
Ibm spectrum scale_backup_n_archive_v03_ash
Ibm spectrum scale_backup_n_archive_v03_ashIbm spectrum scale_backup_n_archive_v03_ash
Ibm spectrum scale_backup_n_archive_v03_ashAshutosh Mate
 
Oracle it runs zfs storage appliance
Oracle it runs zfs storage applianceOracle it runs zfs storage appliance
Oracle it runs zfs storage appliancesolarisyougood
 
اهم الاستخدامات لانواع الصخور
اهم الاستخدامات لانواع الصخوراهم الاستخدامات لانواع الصخور
اهم الاستخدامات لانواع الصخورfiamly
 
Grade 2 reading
Grade 2 readingGrade 2 reading
Grade 2 readingmustafa002
 
Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...
Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...
Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...José Carlos Cabrera
 

Mais procurados (12)

Introduction to IBM Spectrum Scale and Its Use in Life Science
Introduction to IBM Spectrum Scale and Its Use in Life ScienceIntroduction to IBM Spectrum Scale and Its Use in Life Science
Introduction to IBM Spectrum Scale and Its Use in Life Science
 
Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1
 
مراجعة نحو 5ب ت1
مراجعة نحو 5ب ت1مراجعة نحو 5ب ت1
مراجعة نحو 5ب ت1
 
Hadoop Administration pdf
Hadoop Administration pdfHadoop Administration pdf
Hadoop Administration pdf
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
DNS移転失敗体験談
DNS移転失敗体験談DNS移転失敗体験談
DNS移転失敗体験談
 
Ibm spectrum scale_backup_n_archive_v03_ash
Ibm spectrum scale_backup_n_archive_v03_ashIbm spectrum scale_backup_n_archive_v03_ash
Ibm spectrum scale_backup_n_archive_v03_ash
 
Oracle it runs zfs storage appliance
Oracle it runs zfs storage applianceOracle it runs zfs storage appliance
Oracle it runs zfs storage appliance
 
أحكام المد
أحكام المدأحكام المد
أحكام المد
 
اهم الاستخدامات لانواع الصخور
اهم الاستخدامات لانواع الصخوراهم الاستخدامات لانواع الصخور
اهم الاستخدامات لانواع الصخور
 
Grade 2 reading
Grade 2 readingGrade 2 reading
Grade 2 reading
 
Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...
Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...
Cartilla de lectura, idioma arabe. Aprende a leer en árabe.كتاب لتعلم القراءة...
 

Semelhante a Mecanismo de Busca com Node.js + MongoDB

Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDBMecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDBLuiz Duarte
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDBLuiz Duarte
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseLuiz Duarte
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
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 MongoDBAri Stopassola Junior
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSRomulo Fagundes
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
 
Mongo DB
Mongo DBMongo DB
Mongo DBdist_bp
 

Semelhante a Mecanismo de Busca com Node.js + MongoDB (20)

Mecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDBMecanismo de busca .NET Core + MongoDB
Mecanismo de busca .NET Core + MongoDB
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDB
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + Mongoose
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
PHPMongoDB
PHPMongoDBPHPMongoDB
PHPMongoDB
 
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
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
 
Testing node.js
Testing node.jsTesting node.js
Testing node.js
 
Search Plugins para Firefox
Search Plugins para FirefoxSearch Plugins para Firefox
Search Plugins para Firefox
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 

Mais de Luiz Duarte

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 MongoDBLuiz Duarte
 
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...Luiz Duarte
 
Team Building: Passo a Passo
Team Building: Passo a PassoTeam Building: Passo a Passo
Team Building: Passo a PassoLuiz Duarte
 
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 07Luiz Duarte
 
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 04Luiz Duarte
 
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 02Luiz Duarte
 
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 03Luiz Duarte
 
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çãoLuiz Duarte
 
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 01Luiz Duarte
 
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 05Luiz Duarte
 
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 06Luiz Duarte
 
Carreira em Agilidade
Carreira em AgilidadeCarreira em Agilidade
Carreira em AgilidadeLuiz Duarte
 
Gamification em Modelos de Maturidade
Gamification em Modelos de MaturidadeGamification em Modelos de Maturidade
Gamification em Modelos de MaturidadeLuiz Duarte
 
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 - 20Luiz Duarte
 
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 - 19Luiz Duarte
 
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 - 18Luiz Duarte
 
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 - 17Luiz Duarte
 
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 - 16Luiz Duarte
 
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 - 15Luiz Duarte
 
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 - 14Luiz Duarte
 

Mais 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 com Node.js + MongoDB