Académique Documents
Professionnel Documents
Culture Documents
Nous vous proposons un plugin pour intégrer un moteur de recherche interne multi-modèles à une application
CakePHP. Ses caractéristiques sont les suivantes :
http://github.com/kalt/search/tree/master
Deux méthodes pour installer les fichiers : soit en cliquant sur ‘download’ puis en extrayant le répertoire ‘search’
vers le répertoire ‘plugins’ de l’application, soit en exécutant la commande suivante (pour les familiers de Git) :
1.2. DB table
Nous devons créer une table dans la base de données selon le schéma inclu
ici :search/config/sql/search.sql
2. Mise en place
2.1. Modèles
Nous allons lier les modèles que nous voulons indexer au comportement SearchableBehavior, en donnant la liste
des champs à indexer.
C’est la seule chose à faire. Dès qu’un enregistrement sera ajouté ou mis à jour, les champs ‘title’ et ‘body’
seront inclus dans l’index de recherche.
Le formulaire doit obligatoirement contenir un champ texte nommé ‘q’ (« q » pour « query »).
3. Options
3.1. Modes de recherche
Deux types de recherche sont disponibles :
boolean (défaut) : MySQL effectue une recherche booléenne, c’est-à-dire que tous les termes de la
recherche doivent être présents dans les résultats.
natural : MySQL effectue une recherche en langage naturel et retourne les résultats par ordre
décroissant de pertinence.
Plus d’informations sur la recherche en texte intégral sont disponibles sur la documentation de MySQL.
Pour changer de mode, il suffit d’ajouter la ligne suivante dans{app}/config/bootstrap.php
Configure::write('Search.mode', 'natural');
Si false, la recherche avec extension ne sera jamais utilisée, quelle que soit l’expression cherchée. Si true,
la recherche avec extension sera toujours utilisée.
3.3. Caractères autorisés dans l’expression recherchée
De base, les caractères acceptés sont les lettres et les chiffres. Par défaut, nous avons ajouté l’espace, les lettres
accentuées, la cédille et le « o-e collés ».
Il est possible de remplacer cette liste de caractères autorisés en ajoutant cette ligne
dans{app}/config/bootstrap.php
Configure::write('Search.allowedChars', array(' '));
Ici par exemple, nous autorisons l’espace ‘ ‘. Au final donc, tous les signes qui ne sont ni des lettres, ni des
chiffres, ni un espace, seront supprimés de l’expression à chercher.
4. Réécriture de l’URL
Par défaut, l’URL des résultats de recherche est : /search/searches/mots+cles
Nous pouvons changer cette URL en créant une nouvelle route dans{app}/config/routes.php
Router::connect(
'/recherche/*',
array('plugin' => 'search', 'controller' => 'searches', 'action' => 'index')
);