MySQL FULL TEXT SEARCH - Buscar 12.000 com 12000

SQL

MySQL

26/12/2016

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

Curtidas 0

Melhor post

Alan Mario

Alan Mario

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.
GOSTEI 1

Mais Respostas

Alan Mario

Alan Mario

26/12/2016

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/
GOSTEI 0
Eduardo Monteiro

Eduardo Monteiro

26/12/2016

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.
GOSTEI 0
Eduardo Monteiro

Eduardo Monteiro

26/12/2016

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.
GOSTEI 0
Alan Mario

Alan Mario

26/12/2016

Ah sim, então me desculpe.
GOSTEI 1
Eduardo Monteiro

Eduardo Monteiro

26/12/2016

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.
GOSTEI 0
Alan Mario

Alan Mario

26/12/2016

Foi simples implementar esse servidor? Divulgue-o.
GOSTEI 0
Eduardo Monteiro

Eduardo Monteiro

26/12/2016

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.
GOSTEI 1
POSTAR