Question

Je suis entrain de créer une page de recherche où l'on peut trouver le produit en saisissant le texte.

ex:Apporte dans la nuit.

Ma requête apporter les enregistrements qui contiennent le moins de mots à partir de ce.

Besoins:1.La première ligne contient l'enregistrement avec la phrase donnée.2.deuxième rangée de la plupart de la correspondance.3.Troisième rangée correspondante suivante ...etc

Comment atteindre cet objectif.Est-il un algorithme pour cette.Il sera plus utile si quelqu'un part de votre idée.

Edit:

Exemple de recherche Afin:

1. Brings on the night
2. Whoever Brings the Night
3. Night Baseball Brings
4. Night ride
5. Night Round
6. Brings flower

Geetha

Était-ce utile?

La solution

Avez-vous essayé une recherche plein-texte?http://msdn.microsoft.com/en-us/library/ms142583.aspx

Autres conseils

La construction d'un moteur de recherche est une entreprise très complexe, gestion de l'ambiguïté, le langage humain, les fautes de frappe, et beaucoup plus.Vous devriez essayer d'utiliser tout ce qui vient avec votre moteur de base de données.SQL Server et SQLite ont eux hors de la boîte et la plupart des autres bases de données ont probablement des fonctionnalités similaires.Ces moteurs ne sont pas particulièrement bonnes, mais elles devraient suffire pour les scénarios simples.Pour les plus sérieux, essayez de Lucene, qui vient dans diverses saveurs pour différents langages de programmation.

Comme vraiment une solution simple vous pouvez utiliser sql est COMME opérateur.Au lieu de

sélectionnez object_name from table_name where paramètre = quelque chose

Vous feriez

sélectionnez object_name from table_name where paramètre COMME quelque chose de

Cela peut fonctionner pour de très simple scénarios

Quelques conseils
- essayez de votre SGBDR de la recherche plein texte ou d'enquêter sur des solutions telles que Lucene/Solr
- il existe des implémentations de distance (Levenshtein) dans SQL, pour pas si trivial faites à la main le classement
- n-grammes (bigrams, trigrammes) peut faire beaucoup de choses, voir, par exemple, toutes les options de postgres de recherche interne par rapport à mysql ou MSSQL

Interne SGBDR recherches (postgres peut-être une exception) ont généralement trop peu d'options, la mise en œuvre de votre propre est généralement trop difficile ou SGBDR ne serait pas vous laisser faire (efficacement).

En Java, vous avez Lucene

Il y a également un port pour en php (Zend Lucene).

Vous disposez également d'un port de C# Lucene .NET

Le changement de votre base de données de modèles, vous pouvez l'intégrer dans le moteur de recherche.

Un coup d'oeil.J'ai utilisé Lucene dans le passé et il a toujours été très efficace et efficient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top