obsolète : l'utilisation de ce référentiel est obsolète. Veuillez utiliser Scout Extended - https://github.com/algolia/scout-extended à la place.
Une collection de macros utiles pour étendre les capacités de Laravel Scout lors de l'utilisation du moteur Algolia.
Ce package vise à fournir un ensemble de macros pour profiter de la fonctionnalité spécifique à Algolia.
Extrayez le package à l'aide du compositeur
composer require algolia/laravel-scout-algolia-macros
Ensuite, vous devez ajouter AlgoliaScoutMacrosServiceProvider
au tableau providers
de votre fichier de configuration config/app.php
:
Algolia ScoutMacros ServiceProvider ::class
count
La méthode count renverra le nombre de résultats après la requête à Algolia.
Le but est d'éviter d'extraire des données de la base de données et de créer la collection.
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
La méthode hydrate
est similaire à la méthode standard get(), sauf qu'elle hydrate les modèles de votre index Algolia.
Par défaut, Scout utilisera les identifiants des résultats d'Algolia et extraira les données de la base de données locale pour créer la collection.
Par conséquent, hydrate
sera beaucoup plus rapide que get
.
Remarque : En utilisant cette méthode, vous devez être sûr que vous gardez correctement votre index algolia synchronisé avec votre base de données pour éviter de remplir des données obsolètes.
Par défaut, cette méthode ajoutera tous les attributs de l'enregistrement d'Algolia à votre modèle. Si vous souhaitez supprimer les données sensibles ou non pertinentes de votre modèle, vous disposez de deux options.
Vous pouvez définir une liste d'attributs récupérables dans votre tableau de bord Algolia. Dans ce cas, Algolia ne renverra que ces attributs tout en recherchant tous searchableAttributes
.
Vous pouvez également utiliser les attributs laravel $guarded
de votre classe de modèle. Par exemple, si vous ne souhaitez pas voir l'attribut _h
dans votre collection, vous aurez ce qui suit.
namespace App ;
use Illuminate Database Eloquent Model ;
use Laravel Scout Searchable ;
class People extends Model
{
use Searchable ;
protected $ guarded = [ ' _highlightResult ' ];
}
with
La méthode with
vous donne un accès complet au paramètre d'options d'Algolia. Cela vous permet de personnaliser les paramètres de recherche exactement de la même manière que vous le feriez en utilisant directement la bibliothèque php algolia.
$ result = Model :: search ( '' )
-> with ([ ' hitsPerPage ' => 30 ])
-> get ();
$ filters = [
' averge_ratings >= 3 ' ,
' total_reviews >= 1 '
];
$ filterString = implode ( ' AND ' , $ filters );
$ params = [
' aroundLatLng ' => $ lat . ' , ' . $ lon ,
' hitsPerPage ' => 30 ,
' page ' => 0 ,
' aroundRadius ' => 30000 , //30km
' aroundPrecision ' => 200 , //200 Meters
' getRankingInfo ' => true , //return ranking information in results
' filters ' => $ filterString // add filters
];
$ result = Model :: search ( '' )-> with ( $ params )-> get ();
aroundLatLng
La méthode aroundLatLng
ajoutera un paramètre de géolocalisation à la demande de recherche. Vous pouvez définir un point avec ses coordonnées.
Notez que cette méthode est du pur sucre syntaxique, vous pouvez utiliser with
pour spécifier plus de détails de localisation (comme le rayon par exemple)
// Models around Paris latitude and longitude
Model :: search ( ' query ' )-> aroundLatLng ( 48.8588536 , 2.3125377 )-> get ();
Où des clauses peuvent également être ajoutées
Model :: search ( ' query ' )
-> aroundLatLng ( 48.8588536 , 2.3125377 )
-> where ( ' something_id ' , 1 )
-> get ();
N'hésitez pas à ouvrir un ticket pour demander une macro.
Ouvrez n'importe quelle pull request de votre choix, afin que nous puissions en parler et améliorer le package. ?