J'ai un tableau des messages du forum, et je veux améliorer la fonctionnalité de recherche de base car nous recevons beaucoup d'utilisateurs de partout dans le monde qui ne sont pas natifs et qui auront du mal à trouver des résultats quand ils épellent incorrectement. La recherche actuelle sur le forum est exacte.Meilleure façon de concevoir une recherche basée sur soundex
Lequel de ces modèles fonctionnera le mieux? Supposons que la base de données contient 500 000 enregistrements et que la recherche soit fréquemment utilisée. Idéalement, je voudrais qu'il recherche tous les enregistrements.
Design Un
À côté de chaque poste de forum, je stocke soundex_post, qui contient toutes les données soundex. Lorsqu'une recherche est exécutée, elle extrait tous les termes de recherche et effectue une opération LIKE sur les champs soundex.
Design Deux
Je normer. Chaque code soundex est stocké dans une nouvelle table, tblSoundexCodes. Ensuite, il y a une table tblForumPostSoundexCodes:
ID | Post_ID | SoundexCode_ID | Count
Ensuite, lorsqu'un soundex est recherché, je RETIREz tous les Post_IDs où SoundexCode_ID = n
Ai-je raison cette méthode deux sera beaucoup plus rapide, mais il sera beaucoup plus difficile à maintenir (IE, lorsque les gens éditent des messages).
Quelle est votre base de données cible? Si c'est Oracle, la recherche soundex est déjà disponible pour vous. –
@Frank est MSSQL, probablement uniquement en édition express, et j'ai utilisé soundex comme exemple. Je vais probablement implémenter un algorithme plus à jour –