Dans cet article, nous allons vous montrer comment ajouter facilement une barre de recherche performante à votre application Ruby on Rails en utilisant la gem “pg_search”. La recherche est un élément essentiel pour offrir une expérience utilisateur optimale, en permettant à vos visiteurs de trouver rapidement et facilement l’information qu’ils recherchent sur votre site.
La gem “pg_search” s’appuie sur la puissance du moteur de recherche PostgreSQL pour faciliter l’implémentation de fonctionnalités de recherche avancées et flexibles au sein de votre application Rails. Cette gem offre un ensemble d’options de configuration et de personnalisation qui permettent d’adapter la recherche aux besoins spécifiques de votre projet.
Le principe de la recherche dans une application Rails repose sur l’indexation et la consultation des données stockées dans la base de données. La gem “pg_search” simplifie ce processus en intégrant directement la fonction de recherche au niveau du modèle de votre application, ce qui permet d’effectuer des requêtes de recherche complexes sans avoir à écrire manuellement des requêtes SQL.
Le fonctionnement de “pg_search” est assez simple. Après avoir installé et configuré la gem, vous pourrez créer un “scope” de recherche dans le modèle concerné. Ce “scope” permettra d’exécuter des recherches sur un ou plusieurs champs de votre modèle en fonction des mots-clés saisis par l’utilisateur dans la barre de recherche. Enfin, vous pourrez personnaliser le comportement de la recherche en fonction de vos besoins, en choisissant parmi les différentes options et méthodes de recherche disponibles (recherche en texte intégral, trigrammes, etc.).
Dans la suite de cet article, nous vous guiderons pas à pas à travers le processus d’installation et de configuration de la gem “pg_search”, ainsi que la mise en place d’une barre de recherche fonctionnelle dans votre application Rails. Restez avec nous pour découvrir comment améliorer l’expérience utilisateur de votre site en intégrant une barre de recherche performante et facile à utiliser.
1 – Installer pg_search
Pour commencer, ajoutez la gem “pg_search” à votre fichier Gemfile. Ouvrez le fichier Gemfile de votre application Rails et ajoutez la ligne suivante :
gem ‘pg_search’
Ensuite, exécutez la commande bundle install
pour installer la gem et ses dépendances.
2 – Coder le modèle pour faire fonctionner pg_search
Supposons que vous ayez un modèle Article
et que vous souhaitiez effectuer des recherches sur les champs title
et content
. Voici comment procéder :
Ouvrez le fichier article.rb
(ou le modèle correspondant) et ajoutez la ligne suivante en haut du fichier :
include PgSearch::Model
Ensuite, ajoutez un “scope” de recherche en utilisant la méthode “pg_search_scope”. Par exemple :
pg_search_scope :search_by_title_and_content,
against: [:title, :content],
using: {
tsearch: { prefix: true }
}
et de nommer une fonction de recherche personnalisée pour un modèle spécifique de votre application Rails. La méthode “pg_search_scope” est utilisée pour créer ce “scope” de recherche.
En utilisant la méthode “pg_search_scope”, vous pouvez définir un nom pour votre fonction de recherche (par exemple, search_by_title_and_content
) et préciser sur quels champs du modèle la recherche doit être effectuée. La méthode prend également en compte les différentes options et stratégies de recherche que vous souhaitez utiliser, telles que la recherche en texte intégral, les trigrammes, ou la pondération des champs.
3 – Tester la méthode en console (rails c) de pg_search
Pour tester la méthode de recherche, ouvrez la console Rails en exécutant la commande suivante dans votre terminal :
rails c
Une fois dans la console, vous pouvez tester la méthode de recherche. Par exemple, pour rechercher tous les articles contenant le mot “Rails”, exécutez la commande suivante :
articles = Article.search_by_title_and_content("Rails")
Vérifiez les résultats en affichant les articles trouvés :
4 – Créer le formulaire de recherche dans la vue
Ouvrez le fichier de la vue où vous souhaitez ajouter le formulaire de recherche (par exemple, app/views/articles/index.html.erb
). Ajoutez le code suivant pour créer un formulaire de recherche simple :
<%= form_with url: articles_path, method: :get, local: true do %>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Chercher" %>
<% end %>
5 – Adapter le contrôleur pour la recherche
Enfin, modifiez le contrôleur pour prendre en charge la recherche. Ouvrez le fichier articles_controller.rb
(ou le contrôleur correspondant) et modifiez l’action index
pour inclure la recherche :
def index
if params[:query].present?
@articles = Article.search_by_title_and_content(params[:query])
else
@articles = Article.all
end
end
Votre barre de recherche est maintenant fonctionnel 💪🙈
En conclusion, cet article vous a guidé à travers les étapes essentielles pour intégrer une barre de recherche performante dans votre application Rails en utilisant la gem “pg_search”. Nous avons couvert les aspects importants de l’installation de la gem, de la configuration du modèle, du test de la méthode de recherche en console, de la création du formulaire de recherche dans la vue et de l’adaptation du contrôleur pour gérer la recherche.
En suivant ces 5 points clés, vous pouvez facilement ajouter une fonctionnalité de recherche robuste et flexible à votre application Rails, permettant à vos utilisateurs de trouver rapidement et efficacement les informations qu’ils recherchent.
Cet article vous fournit une base solide pour commencer à travailler avec “pg_search”, mais n’hésitez pas à explorer davantage les options et les fonctionnalités offertes par cette gem. Vous pourriez approfondir les différentes stratégies de recherche, personnaliser la pondération des champs, paginer les résultats, styliser la barre de recherche et optimiser la performance de la recherche pour offrir la meilleure expérience utilisateur possible.
En fin de compte, la mise en place d’une barre de recherche efficace et conviviale est un atout précieux pour votre application Rails. Nous espérons que cet article vous aidera à tirer le meilleur parti de la gem “pg_search” et à améliorer l’expérience utilisateur de votre site.
Ressources :
Lien du repo : https://github.com/alexisjps/search-live-demo
Lien de la documentation : https://github.com/Casecommons/pg_search