Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

halfar

buscar dados com MATCH e AGAINST

Recommended Posts

Tenho duas questões neste tópico, ambas as questões se relacionam a pesquisa de texto no banco de dados.

 

1 - A primeira questão:

 

Estou tendo um problema na pesquisa com match e against.

 

Eu tenho dois campos na tabela: TITULO e TEXTO

 

Se eu executar o macth individualmente para cada um dos textos, funciona corretamente, assim:

 

select * from novidades_tecnologia2 WHERE MATCH(titulo) AGAINST ('brasileiros') 
select * from novidades_tecnologia2 WHERE MATCH(texto) AGAINST ('desenvolvem') 

 

mas se eu juntar os dois campos numa única instrução, gera erro:


select * from novidades_tecnologia2 WHERE MATCH(titulo, texto) AGAINST ('brasileiros', 'desenvolvem') 

O erro que ocorre é o seguinte:

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

 

 

 

2 - A outra questão é que gostaria de abordar, é que tanto utilizando o operador like ou against, ambos podem me retornar resultados, cujos resultados PODEM representar a metade da palavra especificada na busca. vamos ao exemplo:

 

se no critério de busca eu especificar a palavra "brasil", ele considerará a palavra "brasileiro" e exibirá no resultado de buscas.

Eu gostaria de uma busca específica, se pedi para buscar "brasil" quero somente textos que contenham a palavra "brasil", e não "brasileiro", embora a palavra "brasil" esteja contida dentro da palavra "brasileiro", este resultado não me interessa, neste tipo de pesquisa, pois quero deixar também a opção para o usuario pesquisar pela palavra exata.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah...beleza funcionou a questão 1...

somente a questão 2 ainda não funcionou, voce diz para colocar o BRASIL entre aspas, mas não deu certo, retorna o BRASILEIRO também

 

mas este é um problema menor, que se não der certo, creio que não terá muito problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew...agora funcionou...

 

na realidade tinha funcionado, o mysql estava me induzindo a uma interpretação errada, ele informa que retornou resultado zero (e isto está correto), mas estava listando resultados de pesquisas anteriores...

 

é um desses bugs de programacao que precisa ser melhorado


bem, tive que retornar, me surgiu uma outra questão:

como é que vou colocar uma variavel dentro de aspas?

 

pois obviamente, vou capturar no formulario a palavra digitada e jogar em uma variável...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para filtrar Strings, geralmente, eu filtro com aspas simples: WHERE campo = 'valor'.

 

Então, se o valor for "Brasil", ficaria desta forma: WHERE campo = '"Brasil"'.

 

Mas também você pode utilizar a contra barra (\) para informar ao MySQL que a aspas duplas deve ser interpretada como aspas duplas: WHERE campo = "\"Brasil\"".

 

No PHP tema função ADDSLASHES() e também a função mysql_real_escape_string(), esta última, acho que funciona melhor por agir em conjunto com o MySQL. Se não utilizar o PHP, basta pesquisar por estas alternativas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.