УСТАРЕЛО: использование этого репозитория устарело. Вместо этого используйте Scout Extended — https://github.com/algolia/scout-extended.
Коллекция полезных макросов для расширения возможностей Laravel Scout при использовании движка Algolia.
Целью этого пакета является предоставление набора макросов, позволяющих воспользоваться преимуществами специфичной для Algolia функции.
Извлеките пакет с помощью композитора
composer require algolia/laravel-scout-algolia-macros
Затем вам следует добавить AlgoliaScoutMacrosServiceProvider
в массив providers
вашего файла конфигурации config/app.php
:
Algolia ScoutMacros ServiceProvider ::class
count
Метод count вернет количество результатов после запроса к Algolia.
Цель состоит в том, чтобы избежать извлечения данных из базы данных и создания коллекции.
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
Метод hydrate
аналогичен стандартному методу get(), за исключением того, что он гидратирует модели из вашего индекса Algolia.
По умолчанию Scout будет использовать идентификаторы результатов из Algolia и извлекать данные из локальной базы данных для создания коллекции.
Следовательно, hydrate
будет происходить гораздо быстрее, чем get
.
Примечание . Используя этот метод, вы должны быть уверены, что правильно синхронизируете индекс Algolia с базой данных, чтобы избежать заполнения устаревших данных.
По умолчанию этот метод добавит в вашу модель все атрибуты из записи Algolia. Если вы хотите удалить конфиденциальные или ненужные данные из вашей модели, у вас есть два варианта.
Вы можете установить список извлекаемых атрибутов на панели управления Algolia. В этом случае Algolia вернет только эти атрибуты, продолжая поиск по каждому searchableAttributes
.
Вы также можете использовать атрибуты laravel $guarded
вашего класса модели. Например, если вы не хотите видеть атрибут _h
в своей коллекции, у вас будет следующее.
namespace App ;
use Illuminate Database Eloquent Model ;
use Laravel Scout Searchable ;
class People extends Model
{
use Searchable ;
protected $ guarded = [ ' _highlightResult ' ];
}
with
Метод with
дает вам полный доступ к параметру параметров Algolia. Это позволяет вам настраивать параметры поиска точно так же, как если бы вы напрямую использовали библиотеку algolia php.
$ 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
aroundLatLng
добавит в поисковый запрос параметр геолокации. Вы можете определить точку с помощью ее координаты.
Обратите внимание, что этот метод представляет собой чистый синтаксический сахар, который вы можете использовать with
указания дополнительных сведений о местоположении (например, радиуса).
// Models around Paris latitude and longitude
Model :: search ( ' query ' )-> aroundLatLng ( 48.8588536 , 2.3125377 )-> get ();
Где также можно добавить пункты
Model :: search ( ' query ' )
-> aroundLatLng ( 48.8588536 , 2.3125377 )
-> where ( ' something_id ' , 1 )
-> get ();
Не стесняйтесь открывать задачу, чтобы запросить макрос.
Откройте любой запрос на включение, чтобы мы могли обсудить его и улучшить пакет. ?