2010-09-19 7 views
0

Nous avons de nombreux objets et chaque objet est livré avec une description de 100-200 mots. (par exemple, le nom de l'auteur d'un livre et un petit résumé).recherche plein texte avec des changements d'orthographe/erreurs

L'utilisateur donne une entrée en série pour les mots. Comment implémenter la recherche avec un texte approximatif et des modifications orthographiques mineures? par exemple « Joshua Bloch », « Joshua blosh », joshua bloc « pourrait conduire à une même résultat texte.

+0

Je ne sais pas grand-chose sur la vérification orthographique mais j'ai entendu dire que les filtres bloom sont utiles dans de tels cas. Vérifiez le lien. http://ipowerinfinity.wordpress.com/2008/03/02/bloom-filters-designing-a-spellchecker/ – Emil

Répondre

1

Si vous utilisez Lucene pour votre recherche de texte intégral, il y a probablement une extension "Did you mean" pour ce que vous voulez.

1

Comment mettre en œuvre la recherche avec le texte approximatif et les modifications mineures d'orthographe? par exemple « Joshua Bloch », » Joshua blosh ", joshua block" pourrait aboutir au même résultat de texte.

Votre base de données prend-elle en charge Soundex? Soundex trouvera des mots qui ressemblent à ceux que vous avez donnés ci-dessus. Même si votre base de données n'a pas de soundex natif, vous pouvez toujours écrire une implémentation et sauvegarder le soundex pour chaque nom d'auteur dans un champ séparé. Cela peut être utilisé pour correspondre plus tard.

Toutefois, Soundex ne remplace pas la recherche de texte intégral; cela n'aidera que dans certains cas, le nom de l'auteur. Si vous cherchez à trouver un texte spécifique de dire, le blurb du livre, alors vous êtes mieux avec une option de recherche de texte intégral (comme Postgresql's).

1

Si vous êtes à la recherche pour la mise en œuvre effective de cette fonction, voici un brillant programme écrit par Peter Norvig: http://norvig.com/spell-correct.html

Il a également des liens vers des implémentations dans de nombreuses autres langues, y compris Java, C etc.

0

Apache Lucene peut répondre à votre facture. Il s'agit d'une bibliothèque de moteurs de recherche de test haute performance entièrement écrite en Java.

1

Vous pouvez utiliser le vérificateur d'orthographe JOrtho. À partir du contexte de votre base de données, vous pouvez générer un dictionnaire personnalisé et le définir. Ensuite, tous les mots qui ne sont pas dans le dictionnaire et pas dans votre base de données sont marqués comme une mauvaise orthographe.

1

Au lieu de Lucene, veuillez vérifier Solr. Lucene est une bibliothèque que vous pouvez utiliser pour intégrer la fonction de recherche dans votre application. Solr est l'implémentation de Lucene que vous pouvez directement connecter à votre application via des API. Pour la plupart des systèmes, Solr économisera en traitant de la complexité de Lucene.