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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top