tamura 0 Denunciar post Postado Agosto 9, 2013 Olá povo! Eu não sei qual seria o termo certo (se é que existe um nome para este tipo de coisa) para aquelas pesquisas onde o usuário digita dois termos (duas palavras) e, nos resultados da busca, retornam todos os registros que possuem estes termos. Por exemplo: Tabela de clientes: Nome Paulo Rodrigues Machado Rodrigo da Silva Mônica Silvana Amorim Bruno Xavier João Pedro Ferreira Luiz Paulo Coelho O usuário pesquisa pelo nome do cliente porém ele sabe só o primeiro nome e o sobrenome: Paulo Machado ... e o sistema retornará dois registros: Paulo Rodrigues Machado Luiz Paulo Coelho Existe um nome para esta técnica? Na realidade não sei nem que termos utilizar no Google para pesquisar este tipo consulta. O que posso imaginar é que o procedimento desta consulta, utilizando um PHP + MySQL, seria dar um explode pelo campo em branco... $termos = explode(" ",$palavra_busca); ... logo após um foreach... $query_completa = "(0 "; foreach($termos as $key => $palavra){ $query_completa .= " OR nome LIKE ('%$palavra%') "; } $query_completa .= ")"; ... e depois a consulta em si... mysql_query("SELECT * FROM clientes WHERE 1 $query_completa"); Ou será que possa haver um procedimento mais adequado para esta técnica? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 10, 2013 http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html Compartilhar este post Link para o post Compartilhar em outros sites
Wanderson Valerio 102 Denunciar post Postado Agosto 10, 2013 $termo = 'Paulo'; // Vindo de um formulário $SQL = "SELECT * FROM `clientes` WHERE ((`nome` LIKE '%".$termo."%') OR (`sobrenome` LIKE '%".$termo."%'))"; $query = mysql_query($SQL) or die(mysql_error()); Vai retornar: "Paulo Valério" "João Paulo" "o nome dele era Paulo" "Paulo era como ele se chamava" "pAuLo" // Retorna também "paulo Barreto" // Strings em minúsculo também Toda string que conter Paulo será retornada pela sua consulta. Lembrando que você pode adicionar quantos campos mais quiser para usar com o LIKE Compartilhar este post Link para o post Compartilhar em outros sites
tamura 0 Denunciar post Postado Agosto 13, 2013 Motta, é isso mesmo que eu estava procurando! Realmente nunca imaginaria que existia esta função no MySQL! Realmente, muito obrigado! Vi que este método MATCH e AGAINST é bem performático e prático para codificar, mas vejo que terei de atualizar o meu MySQL pois estes recursos funcionam a partir do 5.6, tanto para MySAM como para InnoDB. Wanderson, este método que postastes já conhecia, mas mesmo assim obrigado pela força. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Agosto 14, 2013 Tamura, A engine MyISAM suporta FULLTEXT INDEX desde a versão 3.23.23 do MySQL. Compartilhar este post Link para o post Compartilhar em outros sites
tamura 0 Denunciar post Postado Agosto 14, 2013 Tamura, A engine MyISAM suporta FULLTEXT INDEX desde a versão 3.23.23 do MySQL. Ah sim, eu havia escrito... pois estes recursos funcionam a partir do 5.6, tanto para MySAM como para InnoDB. Na realidade me expressei mal, como também utilizo InnoDB, para aplicar o FULLTEXT INDEX terei que atualizar para 5.6. "Full-text indexes can be used only with MyISAM tables. (In MySQL 5.6 and up, they can also be used with InnoDB tables.) Full-text indexes can be created only for CHAR, VARCHAR, or TEXT columns." (http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html) Desculpe, mas grato! Compartilhar este post Link para o post Compartilhar em outros sites