50

Mecanismo de Busca com Node.js + MongoDB

Embed Size (px)

Citation preview

Page 1: Mecanismo de Busca com Node.js + MongoDB
Page 2: Mecanismo de Busca com Node.js + MongoDB
Page 3: Mecanismo de Busca com Node.js + MongoDB

Mecanismo de busca com MongoDB

Page 4: Mecanismo de Busca com Node.js + MongoDB

Apresentação

Conceitos Fundamentais

MongoDB

Node.js

Referências

Dúvidas

Cronograma

Page 5: Mecanismo de Busca com Node.js + MongoDB

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
Page 7: Mecanismo de Busca com Node.js + MongoDB
Page 8: Mecanismo de Busca com Node.js + MongoDB
Page 9: Mecanismo de Busca com Node.js + MongoDB

Conceitos Fundamentais

Page 10: Mecanismo de Busca com Node.js + MongoDB

Fonte de Dados

Classificação

Indexação

Pesquisa

AtualizaçãoConceitos

Fundamentais

Page 11: Mecanismo de Busca com Node.js + MongoDB

1. Fonte de Dados

- Carga de dados

- crawling

- SQL

Page 12: Mecanismo de Busca com Node.js + MongoDB

2. Classificação

- redes neurais

- machine learning

- rankings

- NoSQL?

Page 13: Mecanismo de Busca com Node.js + MongoDB
Page 14: Mecanismo de Busca com Node.js + MongoDB

3. Indexação

- normalização

- tagging

- inverted index

- stopwords, sinônimos

- NoSQL!

Page 15: Mecanismo de Busca com Node.js + MongoDB
Page 16: Mecanismo de Busca com Node.js + MongoDB

4. Pesquisa

- normalização

- tagging

- inverted index

- stopwords, sinônimos

- resultados

Page 17: Mecanismo de Busca com Node.js + MongoDB

5. Atualização

- index rebuild?

- live update?

- Redis…

- MongoDB!

Page 18: Mecanismo de Busca com Node.js + MongoDB

MongoDB

Page 19: Mecanismo de Busca com Node.js + MongoDB
Page 20: Mecanismo de Busca com Node.js + 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

Page 21: Mecanismo de Busca com Node.js + MongoDB

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
Page 23: Mecanismo de Busca com Node.js + MongoDB

MongoDB

Subindo o cliente:

C:\mongo\bin> mongo

Applications/mongo/bin> ./mongo

Page 24: Mecanismo de Busca com Node.js + MongoDB
Page 25: Mecanismo de Busca com Node.js + MongoDB

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
Page 27: Mecanismo de Busca com Node.js + MongoDB

MongoDB

Índice:

db.customers.createIndex({"tags":1});

Page 28: Mecanismo de Busca com Node.js + MongoDB
Page 29: Mecanismo de Busca com Node.js + MongoDB

Node.js

Page 30: Mecanismo de Busca com Node.js + MongoDB

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

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
Page 33: Mecanismo de Busca com Node.js + MongoDB

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

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
Page 36: Mecanismo de Busca com Node.js + MongoDB

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

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

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
Page 40: Mecanismo de Busca com Node.js + MongoDB

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

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

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
Page 44: Mecanismo de Busca com Node.js + MongoDB
Page 45: Mecanismo de Busca com Node.js + MongoDB

Referências

Page 46: Mecanismo de Busca com Node.js + MongoDB
Page 47: Mecanismo de Busca com Node.js + MongoDB
Page 48: Mecanismo de Busca com Node.js + MongoDB
Page 49: Mecanismo de Busca com Node.js + MongoDB

Dúvidas?

Page 50: Mecanismo de Busca com Node.js + MongoDB

Obrigado!