더 이상 사용되지 않음: 이 저장소의 사용은 더 이상 사용되지 않습니다. 대신 Scout Extended(https://github.com/algolia/scout-extended)를 사용하세요.
Algolia 엔진을 사용할 때 Laravel Scout 기능을 확장하는 유용한 매크로 모음입니다.
이 패키지는 Algolia 관련 기능을 활용할 수 있는 매크로 세트를 제공하는 것을 목표로 합니다.
작곡가를 사용하여 패키지 가져오기
composer require algolia/laravel-scout-algolia-macros
다음으로, AlgoliaScoutMacrosServiceProvider
config/app.php
구성 파일의 providers
배열에 추가해야 합니다:
Algolia ScoutMacros ServiceProvider ::class
count
count 메소드는 Algolia에 요청한 후 결과 수를 반환합니다.
요점은 데이터베이스에서 데이터를 가져오고 컬렉션을 구축하는 것을 방지하는 것입니다.
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
hydrate
메소드는 Algolia 지수의 모델을 hydrates한다는 점을 제외하면 표준 get() 메소드와 유사합니다.
기본적으로 Scout는 Algolia의 결과 ID를 사용하고 로컬 데이터베이스에서 데이터를 가져와 컬렉션을 만듭니다.
따라서 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 ();
Where 절을 추가할 수도 있습니다.
Model :: search ( ' query ' )
-> aroundLatLng ( 48.8588536 , 2.3125377 )
-> where ( ' something_id ' , 1 )
-> get ();
매크로를 요청하려면 자유롭게 이슈를 열어주세요.
원하는 끌어오기 요청을 열면 이에 관해 논의하고 패키지를 개선할 수 있습니다. ?