19/08/2022

Installer un petit moteur de recheche à l'aide de PG_SEARCH

Rails
Pg

Vous avez besoin de faire un moteur de recherche qui se fait à travers plusieurs Model ?

Pg_search est là pour vous !

Étape d'installation :

Prenons comme exemple un model Post

Premièrement, il faut ajouter le gem pg_search :

bundle add pg_search

post.rb

class Post < ApplicationRecord

include PgSearch::Model

multisearchable against: [:title, :content]

end

Si vous avez déjà des enregistrements, il faudra réindexer le model

rails g migration ReindexPost ``` ### 20220819104750_reindex_post.rb class ReindexPost < ActiveRecord::Migration[7.0] def change PgSearch::Multisearch.rebuild(Post) end end

rails db:migrate ```

pages_controller.rb

...

unless params[:search].blank?

@results = PgSearch.multisearch("%#{ params[:search] }%")

end

...

Il n'y a plus qu'à ajouter le formulaire de recherche à votre view :

recherche.html.erb

<%= form_tag recherche_path, method: :get do %>

<%= text_field_tag :search, params[:search], PE9316:44 params[:search], class: "input", placeholder: "ex: Ruby, React...", autofocus: true %>

<% end %>

Et voilà, c'est tout chaud ! Laissez reposer 15 minutes au bord de la fenêtre, puis déguster tout seul ou à plusieurs (c'est mieux à plusieurs).