مهملة: تم إهمال استخدام هذا المستودع. الرجاء استخدام Scout Extended - https://github.com/algolia/scout-extend بدلاً من ذلك.
مجموعة من وحدات الماكرو المفيدة لتوسيع قدرات Laravel Scout عند استخدام محرك Algolia.
تهدف هذه الحزمة إلى توفير مجموعة من وحدات الماكرو للاستفادة من الميزة الخاصة بـ Algolia.
اسحب الحزمة باستخدام الملحن
composer require algolia/laravel-scout-algolia-macros
بعد ذلك، يجب عليك إضافة AlgoliaScoutMacrosServiceProvider
إلى مصفوفة providers
في ملف التكوين config/app.php
الخاص بك:
Algolia ScoutMacros ServiceProvider ::class
count
ستعيد طريقة العد عدد النتائج بعد الطلب إلى Algolia.
الهدف هو تجنب سحب البيانات من قاعدة البيانات وبناء المجموعة.
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
تشبه طريقة hydrate
طريقة get() القياسية، إلا أنها ترطب النماذج من فهرس Algolia الخاص بك.
افتراضيًا، سيستخدم Scout معرفات النتائج من Algolia ويسحب البيانات من قاعدة البيانات المحلية لإنشاء المجموعة.
ومن ثم، فإن hydrate
ستكون أسرع بكثير من get
.
ملاحظة : باستخدام هذه الطريقة، يجب أن تتأكد من أنك تحافظ بشكل صحيح على فهرس الغوليا الخاص بك متزامنًا مع قاعدة البيانات الخاصة بك لتجنب نشر البيانات القديمة.
بشكل افتراضي، ستضيف هذه الطريقة كافة السمات من سجل 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 ();
لا تتردد في فتح قضية لطلب ماكرو.
افتح أي طلب سحب تريده، حتى نتمكن من التحدث عنه وتحسين الحزمة. ؟