2010-12-06 48 views
1

Donc, je vais stocker des millions de phrases dans une base de données avec un auteur. Je dois être capable de rechercher efficacement une phrase et de renvoyer l'auteur. Maintenant, j'aimerais pouvoir mal orthographier un mot ou oublier un mot ou deux dans cette phrase, et faire que l'application soit toujours capable de correspondre (fuzzy-esque). Est-ce que quelqu'un peut-il me montrer la bonne direction? Comment google fait-il cela? Parce que je peux rechercher des paroles sur google par exemple et il va retourner la chanson avec les paroles? Je cherche à faire la même chose?Problème: Besoin de rechercher une phrase dans une base de données de millions de phrases?

Merci à tous.

Si le flou rend les choses trop compliquées, alors je peux faire juste une recherche de phrases efficace.

Répondre

0

Pour la recherche de texte intégral, vérifiez la structure de données inverted index.

Voici comment les moteurs de recherche font

samples of code

MISE À JOUR: aussi si vous travaillez sur un chèque de système distribué Hadoop - open source alternative pour MapReduce de Goolge

0

L'indexation complète de texte sur SQL Server ou Oracle sera tout à fait ce que vous recherchez immédiatement. Ils peuvent devenir flous, utiliser des racines de mots et d'autres trucs intelligents. Je ne peux pas commenter sur d'autres moteurs de DB si un google rapide montre la plupart aura quelque chose de similaire. Pour une raison quelconque, je m'attends à ce qu'ils soient plus limités dans le flou.

0

En effet la correspondance floue n'est pas une chose simple à faire, bien que certaines bases de données implémentent une sorte de recherche floue, selon la méthode utilisée et vos données, vos résultats peuvent varier. Voici un lien qui explique les recherches floues dans SQL SEVER

http://msdn.microsoft.com/en-us/magazine/cc163731.aspx

En ce qui concerne la recherche de la phrase, la plupart des moteurs db mettre en œuvre la recherche/indexation en texte intégral que vous pouvez regarder ... Il est livré avec des compromis dans les termes de performance et de stockage, mais vous pouvez vouloir le regarder

1

Si vous écrivez en Java, vous pouvez essayer Lucene.

Est-ce que ce ne devrait pas être "document" et auteur plutôt que des phrases individuelles?

+0

Can Lucene peut-il être intégré à une base de données? – Enrique

0

Comment google faire ça?

Utilisation d'index inversés. Les détails sont propriétaires, mais vous pouvez parier vos derniers dollars qu'il y a beaucoup de réplication et de stockage des index, etc. en mémoire afin qu'ils puissent gérer le grand nombre de requêtes de recherche qu'ils reçoivent par seconde.