2011-08-17 2 views
0

J'ai donc un champ de recherche sur mon application pour interroger les titres de livres (entre autres) et je veux pouvoir rechercher un titre avec les mots en désordre: exemple: étant capable d'obtenir un record même si Huckleberry Finn a été recherché comme Finn Huckleberry. J'ai regardé dans la recherche en texte intégral mais cela devient trop compliqué car je veux faire des requêtes sur plusieurs tables jointes. Comme une remise, est-ce trop étrange si j'utilise php pour séparer les mots où il y a des espaces, stocke les mots comme un tableau, et fait une boucle de WHERE titre COMME "%". $ Titlekeyword. '% "Pour le tableau? Ou est-ce juste un gâchis qui attend de se produire? Je ne veux pas faire quoi que ce soit trop étrange avec ma demande que quelqu'un va prendre dessusFaire une recherche de mots en panne

+0

wheres votre code? – Drewdin

+0

Vous pouvez "exploser" les mots-clés du titre sur un espace et vérifier chaque mot: 'WHERE titre LIKE '% Finn%' ET/OU titre LIKE '% Huckleberry%''. – steveo225

+0

Je pense qu'il est préférable d'appliquer un 'autocomplete' sur l'entrée de l'utilisateur, par ex. [jQuery.autocomplete] (http://docs.jquery.com/Plugins/autocomplete) – J0HN

Répondre

0

générer requête comme

SELECT ... WHERE title like '%Finn%' AND title '%Huckleberry%' AND title '%next%' 

implode(' AND ',array_map(function($x){ 
    return '`title` like "%'.$x.'%"'; 
},explode(' ',$str))); 
+0

chaque titre dans le dessus devrait avoir comme à côté de lui (huckleberry et suivant sont manquants). – jschorr

+0

je vous remercie pour la suggestion! c'était juste ce dont j'avais besoin! – ToryT

Questions connexes