2010-01-07 7 views
3

J'ai un site web d'annonces php (principalement) et j'utilise actuellement MYSQL comme base de données. Plus tard, je vais utiliser SOLR ou peut-être Sphinx comme un "moteur de recherche".Comment stocker les critères de recherche ou les résultats de recherche?

Je veux permettre aux utilisateurs de voir les « résultats » de recherches qu'ils ont faites avant, mais je ne sais pas par où commencer ...

Comment est-ce fait?

Actuellement, j'ai un formulaire qui est rempli et une fois soumis, le php vérifie juste une table mysql pour voir s'il y a des correspondances.

Devrais-je stocker les 'critères de recherche' et faire une nouvelle recherche chaque fois que les utilisateurs cliquent sur une de leurs recherches précédentes, ou devrais-je stocker les résultats? Je préférerais faire une nouvelle recherche parce que de nouveaux éléments ont pu être insérés depuis la dernière recherche!

Si vous avez besoin de plus d'entrée, juste faites-moi savoir et je vais mettre à jour ce Q.

Merci

+0

vous avez répondu à votre question vous-même. "Devrais-je stocker les 'critères de recherche' et faire une nouvelle recherche chaque fois que les utilisateurs cliquent sur une de leurs recherches précédentes, ou devrais-je stocker les résultats? Je préférerais faire une nouvelle recherche parce que de nouveaux éléments ont pu être insérés la dernière recherche! " 1. Comme vous l'avez indiqué, de nouveaux éléments peuvent avoir été ajoutés 2. stocker des critères de recherche sera toujours plus facile et consommera moins d'espace comparé au stockage des résultats de recherche. donc, enregistrez simplement les critères de recherche. – mkamthan

Répondre

2

Eh bien ... si vous parlez essentiellement de « recherches enregistrées », je fais quelque chose de similaire en sorte que je viens d'une table séparée où ....

saved_search_id (primaire) | user_id (étranger) | nom_recherche | critères1 | critères2 | criteria3 ... etc

Donc, fondamentalement, je peux maintenant afficher à l'utilisateur une liste de recherches sauvegardées qu'il a créées, et la table stocke les critères qui faisaient partie de cette recherche. Je peux ensuite utiliser ces critères enregistrés pour exécuter une recherche enregistrée à tout moment.

Cela aide-t-il?

0

Vous avez déjà dit: si les utilisateurs devraient voir les nouveaux résultats de vieilles requêtes, vous aurez avoir à stocker les paramètres de recherche en quelque sorte et refaire la recherche quand un utilisateur le demande.

0

Conserver les critères de recherche. C'est tout à fait obvieux comme si les données changeaient les utilisateurs obtiendront de vieux résultats. Et considérons l'espace que les résultats pourraient prendre après un certain temps :)

Je voudrais également considérer vraiment stocker les critères de recherche pas la requête réelle. Si vous modifiez la base de données, les recherches stockées continueront à fonctionner, car vous devez également mettre à jour le moteur de génération de requêtes, mais vous avez probablement oublié de mettre à jour chaque requête stockée.

1

Utilisez les paramètres de chaîne de requête ($_GET) pour le formulaire de recherche. Ensuite, l'utilisateur peut marquer la recherche. Si vous le souhaitez, vous pouvez créer une fonctionnalité de marque-page dans votre application, mais ce n'est vraiment pas nécessaire. Si vous êtes préoccupé par les performances, assurez-vous que les paramètres de cache de votre base de données sont correctement définis et que vous n'écrivez pas trop souvent sur la table. MySql fera un bon travail de mise en cache alors.

Questions connexes