Comment « Redéfinir la recherche » ou corriger « faute d'orthographe » de la base de données

StackOverflow https://stackoverflow.com/questions/2788192

  •  04-10-2019
  •  | 
  •  

Question

Je veux ajouter une nouvelle fonctionnalité à la recherche dans mon site. J'utilise PHP et MYSQL. base de données mysql, qui contient une table aux éléments que l'utilisateur va chercher, pour chaque article il y a un « mot-clé » colonne de mots-clés séparés par des virgules « Exemple: chat, chien, cheval ». après la recherche d'utilisateur dans mon site je veux obtenir les mots qui sont laissez-moi dire « 85% » semblable à son mot-clé de recherche, c'est pour la recherche redéfinissent. et faute d'orthographe que je veux un service ou quelque chose qui fournissent si le mot clé est correct ou mal orthographié donc je reçois quelques corrections et vérifier si celles existe dans la base de données, puis donner ces corrections à l'utilisateur de changer son mot-clé de recherche.

Je ne demande pas une solution ici ... mais si vous pouvez me diriger dans une manière ou d'une autre qui sera grand

Merci les gars

Vive

Était-ce utile?

La solution

La clé est dans votre idée de « 85% similaire ». Voici quelques idées:

Mots similaires Tableau

Vous pouvez définir une table où vous listez les fautes d'orthographe communes pour vos mots-clés. Vous devrez alors augmenter la façon dont vous recherchez la base de données carte commune à la orthographes juste valeur.

Mots similaires Recherche

Lorsque vous effectuez la recherche, utilisez une bibliothèque pour générer des mots similaires et recherche de tous. Vous pouvez utiliser toute sorte de bibliothèque d'orthographe pour générer des correspondances possibles de mots avant d'envoyer la recherche. Ou écrire votre propre basé sur la Modifier Distance algorithme .

uniquement vérifier si nécessaire: Puisque vous utilisez PHP, vous pouvez envisager pspell. Vous pouvez d'abord appeler pspell_check pour voir si le mot est correctement orthographié. Appelez ensuite pspell_suggest pour obtenir des suggestions.

Voir ce lien pour un exemple.

Utiliser une fonction de base de données

MySQL, par exemple, a un opérateur SOUNDS_LIKE. Vous pouvez rechercher WHERE keyword SOUNDS_LIKE 'kat' et (probablement) get cat. Plus d'informations se trouve sur la page de documentation , qui vous avertit à certaines limites (comme l'anglais et UTF-8 seulement).


Cela ressemble à un problème assez courant, donc peut-être il y a d'autres solutions plus canoniques à ce problème. Peut-être il y a quelque chose de spécifique à la langue que vous utilisez (ou dans la couche d'interface de base de données) qui peut abstraire pour vous.

Les deux premières devrait vous permettre de rencontrer une certaine notion de similarité 85%. Je ne sais pas à quel point la troisième option fonctionnera, mais il « Soundz kool ».

Autres conseils

Il y a similar_text () en PHP, mais après de la requête; vous pouvez également consulter la recherche en texte intégral dans MySQL.

Essayez de regarder dans la distance d'édition algorithme. Fondamentalement, pour deux chaînes entrées, la valeur de retour est le nombre minimum de modifications nécessaires pour transformer une chaîne dans l'autre. Cela peut vous donner une idée sur la façon dont près de deux chaînes sont.

Modifier Distance

Apache Solr est une plate-forme de recherche open source qui fournit non seulement des capacités de recherche en texte intégral, mais aussi avec un score correspondant intégré et systèmes autosuggestion, parmi beaucoup d'autres fonctionnalités puissantes .

Si la quantité d'informations dans votre site ne sont pas assez important, cette option peut sembler excessive, bien que je vous recommande d'au moins vérifier.

La communication entre votre application et Solr peut être traitée via une interface standard REST. Autant que je sache, il y a deux bonnes bibliothèques PHP spécifiques à Solr disponibles au moment:

Configuration du serveur est assez simple, étant la partie laborieuse (ainsi que l'intéressant) que de réglage et l'optimisation Solr pour mieux répondre à vos besoins.

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