DESPRECADO: El uso de este repositorio está obsoleto. Utilice Scout Extended: https://github.com/algolia/scout-extended en su lugar.
Una colección de macros útiles para ampliar las capacidades de Laravel Scout cuando se utiliza el motor Algolia.
Este paquete tiene como objetivo proporcionar un conjunto de macros para aprovechar la característica específica de Algolia.
Extraiga el paquete usando el compositor
composer require algolia/laravel-scout-algolia-macros
A continuación, debe agregar AlgoliaScoutMacrosServiceProvider
a la matriz providers
de su archivo de configuración config/app.php
:
Algolia ScoutMacros ServiceProvider ::class
count
El método de conteo devolverá el número de resultados después de la solicitud a Algolia.
El objetivo es evitar extraer datos de la base de datos y crear la colección.
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
El método hydrate
es similar al método get() estándar, excepto que hidrata los modelos de su índice de Algolia.
De forma predeterminada, Scout utilizará los ID de los resultados de Algolia y extraerá los datos de la base de datos local para crear la colección.
Por lo tanto, hydrate
será mucho más rápido que get
.
Nota : Al utilizar este método, debe asegurarse de mantener sincronizado correctamente su índice de algolia con su base de datos para evitar completar datos obsoletos.
De forma predeterminada, este método agregará todos los atributos del registro de Algolia a su modelo. Si desea eliminar datos confidenciales o irrelevantes de su modelo, tiene dos opciones.
Puede configurar una lista de atributos recuperables en su panel de Algolia. En este caso, Algolia solo devolverá estos atributos mientras sigue buscando en todos searchableAttributes
.
También puedes usar los atributos laravel $guarded
de tu clase de modelo. Por ejemplo, si no desea ver el atributo _h
en su colección, tendrá lo siguiente.
namespace App ;
use Illuminate Database Eloquent Model ;
use Laravel Scout Searchable ;
class People extends Model
{
use Searchable ;
protected $ guarded = [ ' _highlightResult ' ];
}
with
El método with
le brinda acceso completo al parámetro de opciones de Algolia. Esto le permite personalizar los parámetros de búsqueda exactamente igual que lo haría usando la biblioteca php algolia directamente.
$ 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
El método aroundLatLng
agregará un parámetro de geolocalización a la solicitud de búsqueda. Puedes definir un punto con su coordenada.
Tenga en cuenta que este método es puro azúcar sintáctico, puede usarlo with
para especificar más detalles de ubicación (como el radio, por ejemplo)
// Models around Paris latitude and longitude
Model :: search ( ' query ' )-> aroundLatLng ( 48.8588536 , 2.3125377 )-> get ();
Donde también se pueden agregar cláusulas
Model :: search ( ' query ' )
-> aroundLatLng ( 48.8588536 , 2.3125377 )
-> where ( ' something_id ' , 1 )
-> get ();
No dude en abrir una incidencia para solicitar una macro.
Abra cualquier solicitud de extracción que desee para que podamos hablar sobre ella y mejorar el paquete. ?