เลิกใช้แล้ว: การใช้พื้นที่เก็บข้อมูลนี้เลิกใช้แล้ว โปรดใช้ Scout Extended - https://github.com/algolia/scout-exted แทน
ชุดมาโครที่มีประโยชน์เพื่อขยายขีดความสามารถของ Laravel Scout เมื่อใช้เครื่องมือ 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 จะใช้ ID ของผลลัพธ์จาก 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 ();
อย่าลังเลที่จะเปิดปัญหาเพื่อขอมาโคร
เปิดคำขอดึงใด ๆ ที่คุณต้องการ เพื่อให้เราสามารถพูดคุยเกี่ยวกับมันและปรับปรุงแพ็คเกจได้ -