Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite!
Estou efetuando uma busca utilizando match against que está com um pequeno bug:
Faço a busca por dois campos: titulo e texto. O campo título está ok porém o campo texto possui dados em formato HTML, ou seja, quando busco palavras com acento ele somente me retorna se a palavra está no título pois no texto o acento está codificado (EX.: Itália)
SELECT id, titulo, texto, MATCH (titulo, texto) AGAINST ('".$Q."' IN BOOLEAN MODE) AS pontuacao FROM historia WHERE MATCH (titulo, texto) AGAINST ('".$Q."' IN BOOLEAN MODE) ORDER BY pontuacao ASC
Existe alguma solução?
Bah, fiz uma gambiarra que ajudou um pouco mas criou outro problema:
SELECT id, titulo, texto, MATCH (titulo) AGAINST ('".$Q."' IN BOOLEAN MODE) AS pontuacao1, MATCH (texto) AGAINST ('".htmlentities($Q)."' IN BOOLEAN MODE) AS pontuacao2 FROM historia WHERE MATCH (titulo) AGAINST ('".$Q."' IN BOOLEAN MODE) OR MATCH (texto) AGAINST ('".htmlentities($Q)."' IN BOOLEAN MODE) ORDER BY pontuacao1 DESC pontuacao 2 DESC
O problema agora é que algumas palavras acentuadas me retornam resultados mesmo não tendo resultados. Por exemplo: Se digito chá ele me retorna diversos resultados mesmo não tendo a palavra em nenhum dos dois campos.
Idéias? Sugestões?
Grato,
MB