laravel scout tnt search
1.0.0
composer require laravel/scout
หากคุณเผชิญข้อผิดพลาดที่เกี่ยวข้องกับส่วนขยาย PHP ระหว่างการติดตั้งลูกเสือให้เพิ่มบรรทัดนี้หลังจากคำสั่งการติดตั้ง
composer require laravel/scout --ignore-platform-reqs
php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider"
composer require teamtnt/laravel-scout-tntsearch-driver
หากคุณเผชิญข้อผิดพลาดที่เกี่ยวข้องกับส่วนขยายของ PHP ระหว่างการติดตั้งไดรเวอร์ Scout TNTSEARCH ให้เพิ่มบรรทัดนี้หลังจากคำสั่งการติดตั้ง
composer require teamtnt/laravel-scout-tntsearch-driver --ignore-platform-reqs
TeamTNTScoutTNTSearchScoutServiceProvider::class,
LaravelScoutScoutServiceProvider::class,
จากนั้นอัปเดตค่าเริ่มต้นของไฟล์ config/scout.php ของคุณเป็น TNTSEARCH (หรืออัปเดต SCOUT_DRIVER ใน. ENV):
'driver' => env('SCOUT_DRIVER', 'tntsearch'),
ในที่สุดเนื่องจาก TNTSEARCH ไม่ได้รับการสนับสนุนโดย Laravel พารามิเตอร์การกำหนดค่าจึงไม่ปรากฏเป็นค่าเริ่มต้นดังนั้นให้เพิ่มด้วยตนเองในตอนท้ายของไฟล์ config/scout.php:
/*
|--------------------------------------------------------------------------
| MeiliSearch Configuration
|--------------------------------------------------------------------------
|
| Here you may configure your TntSearch settings. TntSearch search
| is an open source PHP engine. No extra services are required
| and all indexes are store locally in `.index` files.
|
| See: https://github.com/teamtnt/laravel-scout-tntsearch-driver
|
*/
'tntsearch' => [
'storage' => storage_path(), //place where the index files will be stored
'fuzziness' => env('TNTSEARCH_FUZZINESS', true),
'fuzzy' => [
'prefix_length' => 2,
'max_expansions' => 50,
'distance' => 2,
],
'asYouType' => false,
'searchBoolean' => env('TNTSEARCH_BOOLEAN', false),
'maxDocs' => env('TNTSEARCH_MAX_DOCS', 500),
],
เพิ่ม Laravel Scout Searchable Trait ให้กับโมเดลที่คุณต้องการ
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
use LaravelScoutSearchable;
class Post extends Model
{
use Searchable;
public $asYouType = true;
public function toSearchableArray(): array
{
return [
'id' => $this->id, // <- Always include the primary key
'title' => $this->title,
'description' => $this->description,
];
}
}
$posts = Post::search('laravel 10')->get();
$posts = Post::search($request->input('search'))->paginate();
//Import product to scout driver
php artisan scout:import AppModelsPost
//Remove product from scout driver
php artisan scout:flush AppModelsPost
//Check scout status
php artisan scout:status