MySQL FULL TEXT SEARCH - Buscar 12.000 com 12000

26/12/2016

0

Pessoal,

Estou passando por um problema sério aqui. Tenho uma tabela com mais de 100.000 produtos e preciso listar todos os produtos contendo a descrição SPLIT 12.000 BTUS, mas o usuário sempre digita SPLIT 12000 BTUS. Isso faz com que o sistema não retorne informação alguma.

Na busca estou usando FULL TEXT SEARCH do mysql gerando uma consulta como a mostrada abaixo:

select produto.descricao from produtos where MATCH(produto.descricao) AGINST ('+SPLIT +12000 + BTUS' in boolean mode) order by descricao


Essa consulta não retorna nada, mesmo tendo vários SPLIT 12.000 BTUS no banco de dados. Alguém já passou por isso? Tem como resolver esse proble?
Eduardo Monteiro

Eduardo Monteiro

Responder

Post mais votado

27/12/2016

Disponha Eduardo, me desculpa mas não sei bem especificamente a solução, mas era para o link ter te ajudado a não ser que existem diferenças com as tecnologias trabalhadas, enfim.

Boa sorte.

Abraço.

Alan Mario

Alan Mario
Responder

Mais Posts

26/12/2016

Alan Mario

Boa noite Eduardo, se for especificamente o MySQL encontrei um artigo com informações importantes, depois diga se deu certo.

https://pt.blog.marceloaltmann.com/en-using-the-mysql-fulltext-index-search-pt-utilizando-mysql-fulltext/
Responder

26/12/2016

Eduardo Monteiro

Alan,

Obrigado pelo link, mas continuo com o mesmo problema. Estou começando a tentar solucionar o problema com um pouco de programação. Pegando o que o usuário digitou, tratando e gerando os filtros para dentro do AGAINST.

Se alguém tiver uma idéia mais simples ficarei muito agradecido.
Responder

27/12/2016

Eduardo Monteiro

O link ajuda, mas o problema não é conhecer o FULL TEXT, mas fazer com que ele entenda que 12.000 é igual a 12000. A minha dificuldade está nesse ponto. Ja tentei até adicionar o "." como stopword, mas não deu certo.
Responder

27/12/2016

Alan Mario

Ah sim, então me desculpe.
Responder

28/12/2016

Eduardo Monteiro

Pessoal,

Ainda estou curioso para saber se é possível resolver esse problema com MySQL, mas como os prazos são curtos, acabei resolvendo esse problema criando um servidor de buscas com Elastic Search. Ele possui um critério de busca chamado "fuzziness" que resolveu meu problema.

Obrigado à todos pela força.
Responder

29/12/2016

Alan Mario

Foi simples implementar esse servidor? Divulgue-o.
Responder

29/12/2016

Eduardo Monteiro

Não foi muito simples, tem pouco material em português e muito em inglês. Tive que ver algumas palestras em inglês para entender como usar Elastic com MySQL e dar uma boa lida na documentação para poder começar a implementar. Depois disso, as coisas estão correndo de modo mais fácil.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar