Algoritmo para a página de pesquisa
-
23-09-2019 - |
Pergunta
Estou criando uma página de pesquisa na qual podemos encontrar o produto digitando o texto.
Ex: traz a noite.
Minha consulta traz os registros que contêm pelo menos uma palavra disso.
NECESSIDADES: 1. A primeira linha deve contém o registro com a frase fornecida. 2. Segunda fila a próxima mais correspondente. 3. Terceira linha na próxima correspondência ... etc
Como conseguir isso. Existe algum algoritmo para isso. Será mais útil se alguém compartilhar sua ideia.
Editar:
Pedido de pesquisa de amostra:
1. Brings on the night
2. Whoever Brings the Night
3. Night Baseball Brings
4. Night ride
5. Night Round
6. Brings flower
Geetha
Solução
Você já tentou pesquisa de texto completo?http://msdn.microsoft.com/en-us/library/ms142583.aspx
Outras dicas
Construir um mecanismo de busca é um empreendimento muito complexo, lidando com ambiguidade, linguagem humana, erros de digitação e muito mais. Você deve tentar usar o que vier com seu mecanismo de banco de dados. O SQL Server e o SQLite os colocam fora da caixa e a maioria dos outros bancos de dados provavelmente possui recursos semelhantes. Esses motores não são particularmente bons, mas devem ser suficientes para cenários simples. Para um trabalho mais sério, tente Lucene, que vem em vários sabores para diferentes linguagens de programação.
Como uma solução realmente simples, você pode usar o SQL's como operador. Ao invés de
Selecione Object_name da tabela_name onde o parâmetro = algo
Você faria
Selecione Object_name de tabela_name onde o parâmetro como algo
Isso pode funcionar para cenários muito simples
Algumas dicas
- Experimente sua pesquisa completa de texto RDBMS ou investigar soluções como Lucene/Solr
- Existem implementações de Distância (Levenshtein) dentro SQL, por não tão trivial fez uma classificação
- n-gramas (bigrams, trigramas) pode fazer muito, veja, por exemplo, todas as opções em PostGres Pesquisa interna em comparação com MySQL ou MSSQL
As pesquisas internas do RDBMS (o Postgres pode ser uma exceção) geralmente têm muito poucas opções, a implementação do seu é geralmente muito difícil ou o RDBMS não o deixaria fazer isso (com eficiência).
Em java você tem Lucene
Há também uma porta para PHP (Zend Lucene).
Você também tem uma porta para C# Lucene .Net
Apenas alterando seus modelos de banco de dados, você pode integrá -lo ao mecanismo de pesquisa.
Dar uma olhada. Eu usei Lucene no passado e sempre foi muito eficaz e eficiente.