Mecanismos de
Busca com PHP +
MongoDB
Cronograma
1. Por que eu?
2. Conceitos fundamentais
3. MongoDB
4. PHP
5. Referências
6. Dúvidas
1 Por que eu?
1. 11 anos programando
2. 7 anos empreendendo
3. 3 mecanismos de busca no ar
4. luiztools.com.br
1 Por que eu?
1 Por que eu?
2 Conceitos Fundamentais
1. Fonte de Dados
2. Classificação
3. Indexação
4. Pesquisa
5. Atualização
2 Conceitos Fundamentais
2.1 Fonte de Dados
•carga de dados
•crawling
•SQL, etc
2 Conceitos Fundamentais
2.2 Classificação
•redes neurais
•machine learning
•rankings
•NoSQL?
2 Conceitos Fundamentais
2.3 Indexação
•normalização
•tagging
•inverted index
•stopwords, sinônimos...
•NoSQL!
2 Conceitos Fundamentais
2.4 Pesquisa
•normalização
•tagging
•inverted index
•stopwords, sinônimos…
•resultados
2 Conceitos Fundamentais
2.5 Atualização
•index rebuild?
•live update?
•Redis...
•MongoDB!!!
3 MongoDB
•mongodb.org
•free
•tenha RAM de sobra
•document oriented
•array fields
•indexed array fields
3 MongoDB
•subir servidor
C:mongodbserver3.xbin> mongod -dbpath C:mongodbserver3.xdata
/Applications/mongo-x/bin> ./mongod -dbpath /Applications/mongo-x/data
3 MongoDB
•carga de dados normalizada
use databaseName
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);
3 MongoDB
•indexed array field
db.customers.createIndex({ "tags": 1 });
4 PHP
•baixar driver mongodb
$ git clone https://github.com/mongodb/mongo-php-driver.git
$ cd mongo-php-driver
$ git submodule sync && git submodule update –init
$ phpize
$ ./configure
$ make
$ sudo make install
4 PHP
•php.ini
extension=mongodb.so
4 PHP
•conexão
$mongo = new MongoDBDriverManager( ‘mongodb://usuario:senha@servidor.mlab.com:23400/nomeDoBanco’);
4 PHP
• formulário
<html>
<head></head>
<body>
<form method=”GET” action=”pesquisa.php”>
<p><label for=”txtPesquisa”>Pesquisa: <input type=”text” id=”txtPesquisa” name=”txtPesquisa” /></p>
<input type=”submit” value=”Pesquisar” />
</form>
</body>
</html>
4 PHP
• pesquisa
$search = explode(' ', $_GET['txtPesquisa']);
$mongo = new MongoDBDriverManager('mongodb://localhost/luiztools');
$filter = ['tags' => ['$all' => $search ] ];
$query = new MongoDBDriverQuery($filter, ['sort' => [ 'nome' => 1], 'limit' => 5]);
$rows = $mongo->executeQuery("luiztools.customers", $query);
foreach ($rows as $row) {
echo "$row->nome : $row->profissaon";
}
5 Referências
•post no site phprs.com.br
•posts no luiztools.com.br
•documentação mongodb.org
•documentação php.net
6 Dúvidas?
Mecanismo de busca PHP + MongoDB

Mecanismo de busca PHP + MongoDB

  • 3.
  • 4.
    Cronograma 1. Por queeu? 2. Conceitos fundamentais 3. MongoDB 4. PHP 5. Referências 6. Dúvidas
  • 5.
    1 Por queeu? 1. 11 anos programando 2. 7 anos empreendendo 3. 3 mecanismos de busca no ar 4. luiztools.com.br
  • 6.
  • 7.
  • 8.
    2 Conceitos Fundamentais 1.Fonte de Dados 2. Classificação 3. Indexação 4. Pesquisa 5. Atualização
  • 9.
    2 Conceitos Fundamentais 2.1Fonte de Dados •carga de dados •crawling •SQL, etc
  • 10.
    2 Conceitos Fundamentais 2.2Classificação •redes neurais •machine learning •rankings •NoSQL?
  • 11.
    2 Conceitos Fundamentais 2.3Indexação •normalização •tagging •inverted index •stopwords, sinônimos... •NoSQL!
  • 12.
    2 Conceitos Fundamentais 2.4Pesquisa •normalização •tagging •inverted index •stopwords, sinônimos… •resultados
  • 13.
    2 Conceitos Fundamentais 2.5Atualização •index rebuild? •live update? •Redis... •MongoDB!!!
  • 14.
    3 MongoDB •mongodb.org •free •tenha RAMde sobra •document oriented •array fields •indexed array fields
  • 15.
    3 MongoDB •subir servidor C:mongodbserver3.xbin>mongod -dbpath C:mongodbserver3.xdata /Applications/mongo-x/bin> ./mongod -dbpath /Applications/mongo-x/data
  • 16.
    3 MongoDB •carga dedados normalizada use databaseName 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);
  • 17.
    3 MongoDB •indexed arrayfield db.customers.createIndex({ "tags": 1 });
  • 18.
    4 PHP •baixar drivermongodb $ git clone https://github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update –init $ phpize $ ./configure $ make $ sudo make install
  • 19.
  • 20.
    4 PHP •conexão $mongo =new MongoDBDriverManager( ‘mongodb://usuario:senha@servidor.mlab.com:23400/nomeDoBanco’);
  • 21.
    4 PHP • formulário <html> <head></head> <body> <formmethod=”GET” action=”pesquisa.php”> <p><label for=”txtPesquisa”>Pesquisa: <input type=”text” id=”txtPesquisa” name=”txtPesquisa” /></p> <input type=”submit” value=”Pesquisar” /> </form> </body> </html>
  • 22.
    4 PHP • pesquisa $search= explode(' ', $_GET['txtPesquisa']); $mongo = new MongoDBDriverManager('mongodb://localhost/luiztools'); $filter = ['tags' => ['$all' => $search ] ]; $query = new MongoDBDriverQuery($filter, ['sort' => [ 'nome' => 1], 'limit' => 5]); $rows = $mongo->executeQuery("luiztools.customers", $query); foreach ($rows as $row) { echo "$row->nome : $row->profissaon"; }
  • 23.
    5 Referências •post nosite phprs.com.br •posts no luiztools.com.br •documentação mongodb.org •documentação php.net
  • 24.