Sistema de busca por palavra chave em um banco de dados
7 respostas
MauNunes
Não sei se aqui é o local certo para está pergunta.
Eu tenho um modelo de dados normal como outro qualquer e preciso realizar a busca por palavra chave, no estilo google. Porem essa busca tem que ser realizada em divesas tabelas e colunas do modelo. Minha dúvida é como estrutura essa base. Eu não sei se cabe aqui um modelo de datawarehouse ou simplesmente criar uma tabela e armazenar nela o conteudo de todas as colunas que preciso pesquisar pela palavra.
Dá uma pesquisada no Apache Solr… pode ser que te sirva…
MauNunes
Então marciorodr0, para esse caso existe o hibernate search. Minha dúvida não está relacionado ao framework e sim ao modelo estrutural das tabelas.
Alexandre_Saudate
Indexar a coluna no banco mesmo já não está bom?
[]'s
Giulliano
Você pode adicionar uma nova coluna por tabela, com o “soundex” ou a “fonologia” da palavra, e buscar por lá. Isto se a sua busca é feita em colunas com somente uma palavra, para textos não ficaria legal.
Outra opção seria uma nova tabela com a palavra e uma referência para linha de outra tabela (ficaria mais trabalhoso).
Alexandre_Saudate
Giulliano:
Você pode adicionar uma nova coluna por tabela, com o “soundex” ou a “fonologia” da palavra, e buscar por lá. Isto se a sua busca é feita em colunas com somente uma palavra, para textos não ficaria legal.
Outra opção seria uma nova tabela com a palavra e uma referência para linha de outra tabela (ficaria mais trabalhoso).
É verdade…esse trecho de código está muito simples para cobrir todas as possíveis varíaveis. Usar a distância de Levenshtein tb tem seus problemas, pq ele não considera a posição dos caracteres apenas a quantidade de substituições. O que poderia trazer resultados fora do contexto. Num futuro distante espero aperfeiçoar esta classes para gerar ao menos um fonema melhor.