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 !

Retour en haut