DEPRECADO: O uso deste repositório está obsoleto. Use Scout Extended - https://github.com/algolia/scout-extended.
Uma coleção de macros úteis para estender os recursos do Laravel Scout ao usar o mecanismo Algolia.
Este pacote tem como objetivo fornecer um conjunto de macros para aproveitar as vantagens do recurso específico do Algolia.
Extraia o pacote usando o compositor
composer require algolia/laravel-scout-algolia-macros
Em seguida, você deve adicionar AlgoliaScoutMacrosServiceProvider
ao array providers
do seu arquivo de configuração config/app.php
:
Algolia ScoutMacros ServiceProvider ::class
count
O método count retornará o número de resultados após a solicitação à Algolia.
O objetivo é evitar extrair dados do banco de dados e construir a coleção.
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
O método hydrate
é semelhante ao método get() padrão, exceto que hidrata os modelos do seu índice Algolia.
Por padrão, o Scout usará os IDs dos resultados do Algolia e extrairá os dados do banco de dados local para criar a coleção.
Conseqüentemente, hydrate
será muito mais rápido do que get
.
Nota : Ao usar este método, você deve ter certeza de que está mantendo corretamente seu índice algolia sincronizado com seu banco de dados para evitar o preenchimento de dados obsoletos.
Por padrão, este método adicionará todos os atributos do registro do Algolia ao seu modelo. Se quiser remover dados confidenciais ou irrelevantes do seu modelo, você tem duas opções.
Você pode definir uma lista de atributos recuperáveis em seu painel Algolia. Neste caso, Algolia retornará apenas esses atributos enquanto ainda pesquisa todos os searchableAttributes
.
Você também pode usar os atributos laravel $guarded
da sua classe de modelo. Por exemplo, se não quiser ver o atributo _h
em sua coleção, você terá o seguinte.
namespace App ;
use Illuminate Database Eloquent Model ;
use Laravel Scout Searchable ;
class People extends Model
{
use Searchable ;
protected $ guarded = [ ' _highlightResult ' ];
}
with
O método with
dá acesso completo ao parâmetro de opções Algolia. Isso permite que você personalize os parâmetros de pesquisa exatamente da mesma forma que faria usando a biblioteca algolia php diretamente.
$ 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
O método aroundLatLng
adicionará o parâmetro de geolocalização à solicitação de pesquisa. Você pode definir um ponto com sua coordenada.
Observe que este método é puro açúcar sintático, você pode usar with
para especificar mais detalhes de localização (como raio, por exemplo)
// Models around Paris latitude and longitude
Model :: search ( ' query ' )-> aroundLatLng ( 48.8588536 , 2.3125377 )-> get ();
Onde cláusulas também podem ser adicionadas
Model :: search ( ' query ' )
-> aroundLatLng ( 48.8588536 , 2.3125377 )
-> where ( ' something_id ' , 1 )
-> get ();
Sinta-se à vontade para abrir um problema para solicitar uma macro.
Abra qualquer pull request que desejar, para que possamos conversar sobre isso e melhorar o pacote. ?