2009-06-23 9 views
0

J'essaie de faire une recherche de titre dans mysql à travers deux bases de données différentes pour faire correspondre les données de sources séparées. Dans db1 ou db2, les titres commencent parfois par "Le premier titre" dans un db, et juste "premier titre" dans l'autre db, ou "lointain" vs "loin & loin".Recherche mysql précédant l'ambiguïté "the" ou "et/&"

Mysql recherche de texte ne semble pas très efficace pour comprendre cela. Je fais actuellement juste un match droit "WHERE title1 = title2", mais cela manque bien sûr toute connexion où il y a de légères différences dans le titre.

La seule solution que j'ai trouvée est de parcourir une série d'instructions if vérifiant si l'un des titres contient "the" ou "&".

Ce n'est pas une façon horrible de le faire, mais je suppose qu'il existe une méthode plus efficace pour écrire ma requête pour gérer ces problèmes.

Des idées? Jusqu'à présent, mes recherches en ligne ont été infructueuses. Merci

Répondre

1

Avez-vous le luxe d'une étape de prétraitement? Si vous le faites, vous pouvez envisager de canoniser les titres sur les deux bases de données avant de les comparer.

+0

Je n'avais pas considéré cela plutôt que de réitérer la recherche, donc je pouvais toujours changer le trim "the" et faire "&" "et", mais je pensais qu'il y aurait une meilleure façon de le faire. – pedalpete

+0

oh oui, maintenant je me souviens pourquoi ce n'était pas en haut de la liste. Le pré-traitement suppose que j'ai les deux titres hors de la base de données pour les comparer, ou voulez-vous dire «pré-traitement» avant que les titres ne soient dans la base de données? – pedalpete

+0

Je pensais en fait à modifier les bases de données. Créer une nouvelle colonne dans chaque, canonicalized_title ou quelque chose comme ça, et faire une mise à jour en vrac pour insérer un titre avec tous les thes trimmed et le & s anded, puis faire une comparaison directe. –