Jump to content


Photo

Realizar Pesquisa Com Todas As Palavras


  • Faça o login para participar
11 replies to this topic

#1 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 14/05/2007, 16:52

Gostaria de saber como é feita aquela busca, como esta do fórum, onde ao digitar palavras como "busca paginada" ou paginação resultados busca" eu obtenho resultados com as palavras informadas mesmo não estando na mesma ordem.

Tenho observado muito isso e notei que aparentemente funciona como um ER se eu tivesse o seguinte trecho:

Andei a cidade toda afim de encontrar o menor preço, pesquisei bastante e após atravessar a cidade toda a pé de supermercado em supermercado descobri que o mais barato era o supermercado que tem na esquina da minha casa!

E pesquisasse "supermercado barato", o trecho acima seria retornado como resultado, note que a palavra supermercado está em outro ponto do texto bem como a palavra barato, é isso que quero saber como se faz. pesquisar várias palavras independente da quantidade.

Falopa!

#2 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 14/05/2007, 17:37

Procure melhor documentação do meu exemplo, que vc conseguirá o que quer.

SELECT Campo FROM Tabela WHERE MATCH ( Campo ) AGAINST ('Palavra')

Aí ficaria um exemplo funcional, tem bastante coisa para ler sobre ele, e gera um resultado para busca muito bom ;)


http://dev.mysql.com...ext-search.html
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#3 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 14/05/2007, 18:34

Aparentemente a tabela precisa ter uma "configuração" especifica, pois, ao testar aqui aparece a seguinte mensagem de erro

#1191 - Can't find FULLTEXT index matching the column list

para alguns campos de algumas tabelas, o que seria?

Falopa!

#4 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 14/05/2007, 18:45

no phpmyadmin seleciona o campo que vc colocou no match e clica no botão q tem um "tezinho vermelho"
Assim vc transformará o campo em "full-text" ou "texto completo" em portugues.

Assim informando ao mysql q este campo poderá ser usado pra este tipo de query.
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#5 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 14/05/2007, 18:55

Eu já tinha feito isso, depois que enviei a resposta eu notei que deveria ser algo relacionado ao FULL TEXT ai eu cliquei e foi beleza.

OBS.: O meu FULL TEXT é azul :P

Falopa!

#6 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 14/05/2007, 18:56

hauhauhau, deve ser o tema... :P

qualquer coisa + grita ae
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#7 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 17/05/2007, 20:40

Seria possível utilizar AGAINST em tabelas do tipo innoDB free?

É que eu fui fazer e informou que a tabela não suporta TEXTO COMPLETO, e quando fui ativar (clicando no "T") percebi que o mesmo não encontra-se ativo. E agora?

Falopa!

#8 Genuir

Genuir

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Interesses:PHP/MySql | HTML | CSS | Javascript

Posted 24/09/2010, 15:16

Seria possível utilizar AGAINST em tabelas do tipo innoDB free?

É que eu fui fazer e informou que a tabela não suporta TEXTO COMPLETO, e quando fui ativar (clicando no "T") percebi que o mesmo não encontra-se ativo. E agora?

Falopa!


Ajudaaa, estou com este problema tbm!

:shit:
Genuir Foret

Site pessoal: http://www.designertec.com

#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 24/09/2010, 17:42

Que problema? Fazer a pesquisa ou ativar o full text?

#10 Genuir

Genuir

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Interesses:PHP/MySql | HTML | CSS | Javascript

Posted 24/09/2010, 20:29

Seria possível utilizar AGAINST em tabelas do tipo innoDB free?

É que eu fui fazer e informou que a tabela não suporta TEXTO COMPLETO, e quando fui ativar (clicando no "T") percebi que o mesmo não encontra-se ativo. E agora?

Falopa!



para ativar a opção fulltext, digite:

ALTER TABLE `<tabela>` ENGINE = MYISAM;

Que problema? Fazer a pesquisa ou ativar o full text?


não consigo fazer a pesquisa, veja o codigo:
<?php
if($_GET['q']){

	$q=$_GET['q'];
	$result=mysql_query("SELECT * FROM `arquivos` WHERE MATCH (texto) AGAINST ('".$q."') ",$con);
	while($dados=mysql_fetch_array($result)){
		echo $dados['texto']."<br>";
	}
}
?>

Retorna este erro:
Can't find FULLTEXT index matching the column list

e se eu tirar esta parte do codigo>> or die(mysql_error())
dá esse erro:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\wamp\www\blog\blog1.1\includes\busca.php on line 6


Sabe como resolver isso??

:shit:

Edição feita por: Genuir, 24/09/2010, 20:31.

Genuir Foret

Site pessoal: http://www.designertec.com

#11 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 24/09/2010, 21:28

É mais fácil dar um replace nos espaços por % e pronto.

$result = mysql_query("SELECT * FROM `arquivos` WHERE texto LIKE '%" . str_replace(" ", "%", $q) ."%'", $con);

Edição feita por: LeoB, 24/09/2010, 21:29.


#12 Genuir

Genuir

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Interesses:PHP/MySql | HTML | CSS | Javascript

Posted 25/09/2010, 08:51

É mais fácil dar um replace nos espaços por % e pronto.

$result = mysql_query("SELECT * FROM `arquivos` WHERE texto LIKE '%" . str_replace(" ", "%", $q) ."%'", $con);


LeoB, testei o código que vc sugeriu, mas tem um problema:

adicionei um texto no DB escrito: teste com palavras

fiz a busca destas formas:
>> busquei com todas palavras e mostrou o texto, até aí tudo bem;
>>busquei com as palavras > teste palavras e mostrou o texto, perfeito;
>>busquei com a palavra > palavras e mostrou o texto, blz;
>>e agora inverti a posição das palavras > palavras teste e não mostrou o texto, sendo que deveria mostrar!

Tem como fazer a consulta independente da ordem das palavras?

:wacko:
quando resolve um problema, apareçe outro!:glare:

-----------------------------------------------------------------------------------

Gostaria de saber como é feita aquela busca, como esta do fórum, onde ao digitar palavras como "busca paginada" ou paginação resultados busca" eu obtenho resultados com as palavras informadas mesmo não estando na mesma ordem.


Opaa, voltandoo, consegui um codigo que faz a busca com várias palavras independente da ordem digitada:


	$q=$_GET['q'];
	$result=mysql_query("SELECT * FROM `arquivos` WHERE MATCH (assunto , texto) AGAINST ('".$q."' in boolean mode) ",$con);
	while($dados=mysql_fetch_array($result)){
		echo $dados['texto']."<br><hr>";
	}


hostdesigner, é isso que vc queria?

Acho que o tópico foi RESOLVIDO!

Edição feita por: Genuir, 25/09/2010, 08:54.

Genuir Foret

Site pessoal: http://www.designertec.com




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq