7
votes

Quelle est la meilleure façon de mettre en œuvre la correction de la typo dans une recherche dans PHP / MySQL?

J'ai un site qui répertorie les films. Naturellement, les gens font des erreurs d'orthographe lors de la recherche de films et, bien sûr, il y a le fait que certains films ont des apostrophes, utilisent des lettres pour épeler des chiffres dans le titre, etc.

Comment puis-je obtenir mon script de recherche pour négliger ces erreurs? Probablement besoin de quelque chose qui est un peu plus intelligent que où mov_title comme "% mot-clé%" .

Il a été suggéré que j'utilise un moteur de recherche complet, mais toutes ces choses ont l'air vraiment compliquée, et je pense que les construire dans ma candidature seront comme l'enfer sur Terre. Si je dois en utiliser un, quel est le moins invasif, cela sera le plus indolore à mettre en œuvre dans le code existant?


0 commentaires

3 Réponses :


6
votes

Je pense que vous devrez mettre en place un moteur de recherche complet externetexte. MySQL n'est tout simplement pas bon dans la recherche Fulltext. Je dirais que vous devriez donner Lucene A Go ( tutoriels ). Zend Framework a une API qui se branche à Lucene, ce qui facilite la tâche. apprendre et utiliser.


3 commentaires

Lucene a-t-elle une reconnaissance typographique intégrée? Qu'en est-il de SphinxSearch?


Oui, Lucene soutient les requêtes de recherche floues. L'algorithme est basé sur la distance de Levenshtein. L'API Java ressemble à ceci: Lucene.apache .org / java / 2_2_0 / API / org / Apache / Lucene / Search / ...


N'y a-t-il pas d'autre moyen sauf en utilisant Lucene?



0
votes

Je n'ai utilisé ni php ni mysql, mais une alternative à la recherche de texte complète pourrait être Soundex Recherches < / a>.


1 commentaires

MySQL par défaut prend en charge Sundex



1
votes

Présumer que vous utilisez MySQL - MySQL n'a pas de fonctionnalité intégrée capable de le faire.

Cela signifie que vous devrez mettre en place une recherche en texte intégral vous-même ou utiliser un outil de recherche de texte complet tiers.

  • Si vous le mettez en œuvre vous-même, vous devez vous pencher sur le Métaphone ou double métaphone algorithmes (je les recommanderais sur Soundex, ce qui n'est pas aussi bon sur ce type de tâche) , pour stocker des représentations phénétiques de tous vos mots. Cependant, la construction de votre propre recherche de texte complète n'est pas une tâche pour le cœur faible. N'essayez pas si vous ne vous considérez pas si vous vous considérez comme un assistant de base de données.
  • Si vous voulez un outil tiers, Lucene est la voie à suivre. Il est porté dans des tonnes de différentes langues / plateformes Y compris PHP - Vous n'avez pas à utiliser Java.

0 commentaires