Moteur de recherche
Dans cette ressource, tu retrouveras toutes les étapes te permettant de mettre en place un moteur de recherche sur ton appli web, avec Flask et mongoDB.
Dans cette page tu trouveras :
Le formulaire du moteur de recherche
Dans un premier temps, il faut positionner la barre de recherche dans le template html de ton choix.
Ta barre de recherche est un formulaire, dans lequel on va laisser l’utilisateur taper son et ses mots clés dans l’input de celui-ci.
Tu dois bien penser à :
- La balise form
- avec action qui va rediriger sur la route des résultats de la recherche
- et la méthode POST qui permet de récupérer ce que l’utilisateur va écrire dans l’input.
- Un input de type text où l’utilisateur va écrire
- ne pas oublier le name qui est le nom qui va permettre de l’appeler dans ton main.py pour récupérer les informations écrites par l’utilisateur
- Un input de type submit, pour envoyer le formulaire quand l’utilisateur cliquera sur « rechercher » ou simplement sur la touche « entrée »
La programmation de la recherche
Débuter la route et sa fonction
Ta route doit envoyer a un templaté dédié qui affichera les résultats de la recherche.
Et elle doit bien être en méthode POST pour récupérer ce que l’utilisateur a écrit en recherche.
Ensuite on récupère la valeur entrée par l’utilisateur dans l’input du formulaire. Sur cet exemple, on récupère l’input ayant name= »query »
La méthode aggregate()
Maintenant, on va appeler notre base de données, et la collection que l’on veut interroger.
Pour pouvoir créer une requête capable de filtrer les résultats, on va utiliser la méthode aggregate().
Elle est utilisée pour effectuer des requêtes un peu plus complexes sur les données stockées dans notre bdd. Contrairement à d’autres méthodes de requête comme find(), qui renvoie les documents correspondants à certains critères, aggregate() permet d’exécuter des regroupements de données, les traiter, les filtrer, etc.
La méthode aggregate() utilise :
$match : va servir a détailler sur quels critères l’on veut filtrer les résultats. Dans cet exemple, ils sont filtrés sur le titre de la collection cafés.
$regex : c’est l’expression régulière qui va récupérer l’input rempli par l’utilisateur
$options : indique que la recherche ne doit pas être sensible à la casse. (on ne différenciera pas les majuscules et les minuscules lors de la recherche)
Le return
Il faut maintenant terminer la méthode de la route avec le return.
Le render_template qui doit amener au template d’affichage des résultats.
On retourne également la variable query
Et on indique que la variable cafes sera égal à la liste des cafés.
L’affichage des résultats
Créer le template allant avec le render_template que tu as indiqué dans ta route pour afficher les résultats.
Tu vas pouvoir appeler dynamiquement tes résultats, comme tu en as l’habitude, avec une simple boucle et en définissant quel champ de ton document tu veux afficher.
Tu es maintenant prêt a te personnaliser ce moteur de recherche, en appelant tes tables concernées, affichant les champs que tu veux, et bien sur avec un bon coup de css pour le peaufiner !