استخدام Laravel Scout لتمكين البحث عن نص كامل
نشرت: 2023-05-08أصبح إطار عمل Laravel مصدرًا أساسيًا للمطورين الذين يبنون خدمات الويب.
كأداة مفتوحة المصدر ، يوفر Laravel عددًا لا يحصى من الوظائف الجاهزة التي تمكن المطورين من بناء تطبيقات قوية وعملية.
من بين عروضها Laravel Scout ، مكتبة لإدارة فهارس البحث لتطبيقك. تسمح مرونته للمطورين بضبط التكوينات والاختيار من برامج تشغيل Algolia أو Meilisearch أو MySQL أو Postgres لتخزين الفهارس.
هنا ، سوف نستكشف هذه الأداة بعمق ، ونعلمك كيفية إضافة دعم البحث عن نص كامل إلى تطبيق Laravel من خلال برنامج التشغيل. ستعمل على تصميم تطبيق Laravel التجريبي لتخزين اسم القطارات النموذجية ثم استخدام Laravel Scout لإضافة بحث إلى التطبيق.
المتطلبات الأساسية
للمتابعة ، يجب أن يكون لديك:
- برنامج التحويل البرمجي PHP مثبت على جهاز الكمبيوتر الخاص بك. يستخدم هذا البرنامج التعليمي إصدار PHP 8.1.
- تم تثبيت محرك Docker أو Docker Desktop على جهاز الكمبيوتر الخاص بك
- حساب سحابة Algolia ، يمكنك إنشاؤه مجانًا
كيفية تثبيت Scout في مشروع Laravel
لاستخدام Scout ، يجب عليك أولاً إنشاء تطبيق Laravel حيث تنوي إضافة وظيفة البحث. يحتوي سكربت Laravel-Scout Bash على الأوامر لإنشاء تطبيق Laravel داخل حاوية Docker. يعني استخدام Docker أنك لست بحاجة إلى تثبيت برامج دعم إضافية ، مثل قاعدة بيانات MySQL.
يستخدم سكربت Laravel-scout لغة البرمجة Bash ، لذلك يجب عليك تنفيذها في بيئة Linux. إذا كنت تقوم بتشغيل Windows ، فتأكد من تكوين Windows Subsystem for Linux (WSL).
إذا كنت تستخدم WSL ، فنفّذ الأمر التالي في جهازك لتعيين توزيع Linux المفضل لديك.
wsl -s ubuntu
بعد ذلك ، انتقل إلى الموقع على جهاز الكمبيوتر الخاص بك الذي ترغب في وضع المشروع فيه. سينشئ سكربت Laravel-Scout دليل مشروع هنا. في المثال أدناه ، سينشئ البرنامج النصي Laravel-Scout دليلاً داخل دليل سطح المكتب .
cd /desktop
قم بتشغيل الأمر أدناه لتنفيذ سكربت Laravel-Scout. سوف يقوم بتدعيم تطبيق Dockerized برمز معياري ضروري.
curl -s https://laravel.build/laravel-scout-app | bash
بعد التنفيذ ، قم بتغيير الدليل الخاص بك باستخدام cd laravel-scout-app
. بعد ذلك ، قم بتشغيل الأمر sail-up
داخل مجلد المشروع لبدء حاويات Docker لتطبيقك.
ملاحظة: في العديد من توزيعات Linux ، قد تحتاج إلى تشغيل الأمر أدناه باستخدام الأمر sudo
لبدء امتيازات مرتفعة.
./vendor/bin/sail up
قد تواجه خطأ:
لحل هذه المشكلة ، استخدم متغير APP_PORT
لتحديد منفذ داخل الأمر sail up
:
APP_PORT=3001 ./vendor/bin/sail up
بعد ذلك ، قم بتنفيذ الأمر أدناه لتشغيل التطبيق من خلال Artisan على خادم PHP.
php artisan serve
من متصفح الويب الخاص بك ، انتقل إلى التطبيق قيد التشغيل على http://127.0.0.1:8000. سيعرض التطبيق صفحة الترحيب في Laravel في المسار الافتراضي.
كيفية إضافة Laravel Scout إلى التطبيق
في الجهاز الطرفي ، أدخل الأمر لتمكين مدير حزمة Composer PHP من إضافة Laravel Scout إلى المشروع.
composer require laravel/scout
بعد ذلك ، انشر ملف تكوين Scout باستخدام الأمر vendor: publish. سيقوم الأمر بنشر ملف تكوين scout.php
في دليل التكوين الخاص بتطبيقك.
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
الآن ، قم بتعديل ملف boilerplate .env ليحتوي على قيمة منطقية SCOUT_QUEUE
.
ستسمح قيمة SCOUT_QUEUE
لسكاوت بعمليات قائمة الانتظار ، مما يوفر أوقات استجابة أفضل. بدونها ، لن يعكس سائقو الكشافة مثل Meilisearch الأرقام القياسية الجديدة على الفور.
SCOUT_QUEUE=true
أيضًا ، قم بتعديل متغير DB_HOST
في ملف .env للإشارة إلى مضيفك المحلي لاستخدام قاعدة بيانات MySQL داخل حاويات Docker.
DB_HOST=127.0.0.1
كيفية تحديد نموذج وتكوين الفهرس
لا يقوم Scout بتمكين نماذج البيانات القابلة للبحث افتراضيًا. يجب وضع علامة صراحة على نموذج على أنه قابل للبحث باستخدام سمة Laravel\Scout\Searchable
الخاصة به.
ستبدأ بإنشاء نموذج بيانات لتطبيق Train
تجريبي وتمييزه على أنه قابل للبحث.
كيفية إنشاء نموذج
بالنسبة لتطبيق Train
، سترغب في تخزين أسماء العناصر النائبة لكل قطار متاح.
قم بتنفيذ الأمر Artisan أدناه لإنشاء الترحيل وتسميته create_trains_table
.
php artisan make:migration create_trains_table
سيتم إنشاء الترحيل في ملف يجمع اسمه بين الاسم المحدد والطابع الزمني الحالي.
افتح ملف الترحيل الموجود في قاعدة البيانات / التهجيرات / الدليل.
لإضافة عمود عنوان ، أضف التعليمات البرمجية التالية بعد العمود id()
في السطر 17. سيضيف الرمز عمود عنوان.
$table->string('title');
لتطبيق الترحيل ، قم بتنفيذ الأمر أدناه.
php artisan migrate
بعد تشغيل عمليات ترحيل قاعدة البيانات ، أنشئ ملفًا باسم Train.php في دليل التطبيق / النماذج / .
كيفية إضافة سمة LaravelScoutSearchable
قم بتمييز نموذج Train
للبحث عن طريق إضافة سمة Laravel\Scout\Searchable
إلى النموذج ، كما هو موضح أدناه.
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Laravel\Scout\Searchable; class Train extends Model { use Searchable; public $fillable = ['title'];
تحتاج أيضًا إلى تكوين فهارس البحث عن طريق تجاوز طريقة searchable
. سيستمر السلوك الافتراضي لـ Scout في النموذج لمطابقة اسم جدول النموذج.
لذلك ، أضف الكود التالي إلى ملف Train.php أسفل الرمز من الكتلة السابقة.
/** * Retrieve the index name for the model. * * @return string */ public function searchableAs() { return 'trains_index'; } }
كيفية استخدام Algolia مع Scout
لأول بحث عن نص كامل باستخدام Laravel Scout ، ستستخدم برنامج تشغيل Algolia. Algolia هي عبارة عن منصة برمجية كخدمة (SaaS) تستخدم للبحث في كميات كبيرة من البيانات. يوفر لوحة معلومات على الويب للمطورين لإدارة فهارس البحث الخاصة بهم وواجهة برمجة تطبيقات قوية يمكنك الوصول إليها عبر مجموعة تطوير البرامج (SDK) بلغة البرمجة المفضلة لديك.
داخل تطبيق Laravel ، ستستخدم حزمة عميل Algolia لـ PHP.
كيفية إعداد Algolia
أولاً ، يجب عليك تثبيت حزمة عميل بحث Algolia PHP لتطبيقك.
نفّذ الأمر أدناه.
composer require algolia/algoliasearch-client-php
بعد ذلك ، يجب عليك تعيين معرف التطبيق وبيانات اعتماد واجهة برمجة التطبيقات السرية من Algolia في ملف .env .
باستخدام متصفح الويب الخاص بك ، انتقل إلى لوحة معلومات Algolia للحصول على معرّف التطبيق وبيانات اعتماد مفتاح واجهة برمجة التطبيقات السرية.
انقر فوق الإعدادات في الجزء السفلي من الشريط الجانبي الأيسر للانتقال إلى صفحة الإعدادات .
بعد ذلك ، انقر فوق API Keys داخل قسم الفريق والوصول في صفحة الإعدادات لعرض مفاتيح حساب Algolia الخاص بك.
في صفحة مفاتيح واجهة برمجة التطبيقات ، لاحظ قيم معرّف التطبيق ومفتاح واجهة برمجة تطبيقات المشرف . ستستخدم بيانات الاعتماد هذه لمصادقة الاتصال بين تطبيق Laravel و Algolia.
أضف الكود أدناه إلى ملف .env الخاص بك باستخدام محرر الكود الخاص بك واستبدل العناصر النائبة بأسرار Algolia API المقابلة.
ALGOLIA_APP_ID=APPLICATION_ID ALGOLIA_SECRET=ADMIN_API_KEY
أيضًا ، استبدل متغير SCOUT_DRIVER
بالكود أدناه لتغيير القيمة من meilisearch
إلى algolia
. سيؤدي تغيير هذه القيمة إلى توجيه Scout لاستخدام برنامج تشغيل Algolia.
SCOUT_DRIVER=algolia
كيفية إنشاء وحدات التحكم في التطبيق
ضمن الدليل app / Http / Controllers / ، أنشئ ملف TrainSearchController.php لتخزين وحدة تحكم للتطبيق. ستدرج وحدة التحكم البيانات وتضيفها إلى نموذج Train
.
قم بإضافة كتلة التعليمات البرمجية التالية إلى ملف TrainSearchController.php لإنشاء وحدة التحكم.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Models\Train; class TrainSearchController extends Controller { /** * Get the index name for the model. * * @return string */ public function index(Request $request) { if($request->has('titlesearch')){ $trains = Train::search($request->titlesearch) ->paginate(6); }else{ $trains = Train::paginate(6); } return view('Train-search',compact('trains')); } /** * Get the index name for the model. * * @return string */ public function create(Request $request) { $this->validate($request,['title'=>'required']); $trains = Train::create($request->all()); return back(); } }
كيفية إنشاء مسارات التطبيق
في هذه الخطوة ، ستنشئ المسارات لإدراج القطارات الجديدة وإضافتها إلى قاعدة البيانات.
افتح ملف path / web.php واستبدل الكود الحالي بالكتلة أدناه.
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\TrainSearchController; Route::get('/', function () { return view('welcome'); }); Route::get('trains-lists', [TrainSearchController::class, 'index']) -> name ('trains-lists'); Route::post('create-item', [TrainSearchController::class, 'create']) -> name ('create-item');
يحدد الكود أعلاه طريقين في التطبيق. يسرد طلب GET
لمسار /trains-lists
جميع بيانات القطار المخزنة. ينشئ طلب POST
لمسار /create-item
بيانات قطار جديدة.
كيفية إنشاء طرق عرض التطبيق
قم بإنشاء ملف داخل resources / views / directory وقم بتسميته Train-search.blade.php . سيعرض الملف واجهة المستخدم لوظيفة البحث.
أضف محتوى كتلة التعليمات البرمجية أدناه إلى ملف Train-search.blade.php لإنشاء صفحة واحدة لوظيفة البحث.
<!DOCTYPE html> <html> <head> <title>Laravel - Laravel Scout Algolia Search Example</title> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> </head> <body> <div class="container"> <h2 class="text-bold">Laravel Full-Text Search Using Scout </h2><br/> <form method="POST" action="{{ route('create-item') }}" autocomplete="off"> @if(count($errors)) <div class="alert alert-danger"> <strong>Whoops!</strong> There is an error with your input. <br/> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <input type="hidden" name="_token" value="{{ csrf_token() }}"> <div class="row"> <div class="col-md-6"> <div class="form-group {{ $errors->has('title') ? 'has-error' : '' }}"> <input type="text" name="title" class="form-control" placeholder="Enter Title" value="{{ old('title') }}"> <span class="text-danger">{{ $errors->first('title') }}</span> </div> </div> <div class="col-md-6"> <div class="form-group"> <button class="btn btn-primary">Create New Train</button> </div> </div> </div> </form> <div class="panel panel-primary"> <div class="panel-heading">Train Management</div> <div class="panel-body"> <form method="GET" action="{{ route('trains-lists') }}"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <input type="text" name="titlesearch" class="form-control" placeholder="Enter Title For Search" value="{{ old('titlesearch') }}"> </div> </div> <div class="col-md-6"> <div class="form-group"> <button class="btn btn-primary">Search</button> </div> </div> </div> </form> <table class="table"> <thead> <th>Id</th> <th>Train Title</th> <th>Creation Date</th> <th>Updated Date</th> </thead> <tbody> @if($trains->count()) @foreach($trains as $key => $item) <tr> <td>{{ ++$key }}</td> <td>{{ $item->title }}</td> <td>{{ $item->created_at }}</td> <td>{{ $item->updated_at }}</td> </tr> @endforeach @else <tr> <td colspan="4">No train data available</td> </tr> @endif </tbody> </table> {{ $trains->links() }} </div> </div> </div> </body> </html>
يحتوي كود HTML أعلاه على عنصر نموذج مع حقل إدخال وزر لكتابة عنوان قطار قبل حفظه في قاعدة البيانات. يحتوي الرمز أيضًا على جدول HTML يعرض المعرف ، والعنوان ، و created_at ، و updated_at تفاصيل إدخال قطار داخل قاعدة البيانات.
كيفية استخدام البحث Algolia
لعرض الصفحة ، انتقل إلى http://127.0.0.1:8000/trains-lists من متصفح الويب الخاص بك.
قاعدة البيانات فارغة حاليًا ، لذا تحتاج إلى إدخال عنوان تدريب تجريبي في حقل الإدخال والنقر فوق إنشاء قطار جديد لحفظه.
لاستخدام ميزة البحث ، اكتب كلمة أساسية من أي عناوين قطار محفوظة في حقل إدخال إدخال العنوان للبحث وانقر فوق بحث .
كما هو موضح في الصورة أدناه ، لن يتم عرض سوى إدخالات البحث التي تحتوي على الكلمة الأساسية في عناوينها.
Meilisearch مع Laravel Scout
Meilisearch هو محرك بحث مفتوح المصدر يركز على السرعة والأداء وتجربة المطور المحسنة. تشترك في العديد من الميزات مع Algolia ، باستخدام نفس الخوارزميات وهياكل البيانات والبحث - ولكن بلغة برمجة مختلفة.
يمكن للمطورين إنشاء مثيل Meilisearch واستضافته ذاتيًا داخل البنية التحتية السحابية أو المحلية الخاصة بهم. لدى Meilisearch أيضًا عرض سحابي تجريبي مشابه لـ Algolia للمطورين الذين يرغبون في استخدام المنتج دون إدارة بنيته التحتية.
في البرنامج التعليمي ، لديك بالفعل مثيل محلي لـ Meilisearch قيد التشغيل داخل حاويات Docker الخاصة بك. ستقوم الآن بتوسيع وظيفة Laravel Scout لاستخدام مثيل Meilisearch.
لإضافة Meilisearch إلى تطبيق Laravel ، قم بتشغيل الأمر أدناه في محطة مشروعك.
composer require meilisearch/meilisearch-php
بعد ذلك ، تحتاج إلى تعديل متغيرات Meilisearch داخل ملف .env لتكوينه.
استبدل متغيرات SCOUT_DRIVER
و MEILISEARCH_HOST
و MEILISEARCH_KEY
في ملف .env بالمتغيرات أدناه.
SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=LockKey
يحدد مفتاح SCOUT_DRIVER
برنامج التشغيل الذي يجب أن يستخدمه Scout ، بينما يمثل MEILISEARCH_HOST
المجال الذي يعمل عليه مثيل Meilisearch. على الرغم من أنه ليس مطلوبًا أثناء التطوير ، يوصى بإضافة MEILISEARCH_KEY
في الإنتاج.
ملاحظة: قم بالتعليق على معرف Algolia و Secret عند استخدام Meilisearch كسائق مفضل لديك.
بعد إكمال تكوينات .env ، يجب عليك فهرسة سجلاتك الموجودة مسبقًا باستخدام الأمر Artisan أدناه.
php artisan scout:import "App\Models\Train"
Laravel Scout مع محرك قاعدة البيانات
قد يكون محرك قاعدة بيانات Scout هو الأنسب للتطبيقات التي تستخدم قواعد بيانات أصغر أو تدير أعباء عمل أقل كثافة. حاليًا ، يدعم محرك قاعدة البيانات PostgreSQL و MySQL.
يستخدم هذا المحرك عبارات "where-like" وفهارس النص الكامل مقابل قاعدة البيانات الحالية ، مما يمكّنه من العثور على نتائج البحث الأكثر صلة. لست بحاجة إلى فهرسة سجلاتك عند استخدام محرك قاعدة البيانات.
لاستخدام محرك قاعدة البيانات ، يجب عليك تعيين متغير .env SCOUT_DRIVER
إلى قاعدة البيانات.
افتح ملف .env داخل تطبيق Laravel وقم بتغيير قيمة متغير SCOUT_DRIVER
.
SCOUT_DRIVER = database
بعد تغيير برنامج التشغيل الخاص بك إلى قاعدة البيانات ، سيتحول Scout إلى استخدام محرك قاعدة البيانات للبحث عن نص كامل.
محرك التجميع مع Laravel Scout
بالإضافة إلى محرك قاعدة البيانات ، تقدم Scout أيضًا محرك تجميع. يستخدم هذا المحرك عبارات "أين" وتصفية المجموعة لاستخراج نتائج البحث الأكثر صلة.
بخلاف محرك قاعدة البيانات ، يدعم محرك المجموعة جميع قواعد البيانات الارتباطية التي يدعمها Laravel أيضًا.
يمكنك استخدام محرك المجموعة عن طريق تعيين متغير بيئة SCOUT_DRIVER
collection
أو عن طريق تحديد برنامج تشغيل المجموعة يدويًا في ملف تكوين Scout.
SCOUT_DRIVER = collection
مستكشف مع Elasticsearch
بفضل قوة استعلامات Elasticsearch ، يعد Explorer محرك بحث Elasticsearch حديث لـ Laravel Scout. إنه يوفر برنامج تشغيل Scout متوافق ومزايا مثل تخزين كميات هائلة من البيانات والبحث فيها وتحليلها في الوقت الفعلي. تقدم Elasticsearch باستخدام Laravel نتائج بالمللي ثانية.
لاستخدام برنامج تشغيل Elasticsearch Explorer في تطبيق Laravel الخاص بك ، ستحتاج إلى تكوين ملف boilerplate docker-compose.yml الذي أنشأه البرنامج النصي Laravel-Scout. ستضيف التكوينات الإضافية لـ Elasticsearch وإعادة تشغيل الحاويات.
افتح ملف docker-compose.yml واستبدل محتوياته بما يلي.
# For more information: https://laravel.com/docs/sail version: '3' services: laravel.test: build: context: ./vendor/laravel/sail/runtimes/8.1 dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' image: sail-8.1/app extra_hosts: - 'host.docker.internal:host-gateway' ports: - '${APP_PORT:-80}:80' - '${VITE_PORT:-5173}:${VITE_PORT:-5173}' environment: WWWUSER: '${WWWUSER}' LARAVEL_SAIL: 1 XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}' XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}' volumes: - '.:/var/www/html' networks: - sail depends_on: - mysql - redis - meilisearch - mailhog - selenium - pgsql - elasticsearch mysql: image: 'mysql/mysql-server:8.0' ports: - '${FORWARD_DB_PORT:-3306}:3306' environment: MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' MYSQL_ROOT_HOST: "%" MYSQL_DATABASE: '${DB_DATABASE}' MYSQL_USER: '${DB_USERNAME}' MYSQL_PASSWORD: '${DB_PASSWORD}' MYSQL_ALLOW_EMPTY_PASSWORD: 1 volumes: - 'sail-mysql:/var/lib/mysql' - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' networks: - sail healthcheck: test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"] retries: 3 timeout: 5s elasticsearch: image: 'elasticsearch:7.13.4' environment: - discovery.type=single-node ports: - '9200:9200' - '9300:9300' volumes: - 'sailelasticsearch:/usr/share/elasticsearch/data' networks: - sail kibana: image: 'kibana:7.13.4' environment: - elasticsearch.hosts=http://elasticsearch:9200 ports: - '5601:5601' networks: - sail depends_on: - elasticsearch redis: image: 'redis:alpine' ports: - '${FORWARD_REDIS_PORT:-6379}:6379' volumes: - 'sail-redis:/data' networks: - sail healthcheck: test: ["CMD", "redis-cli", "ping"] retries: 3 timeout: 5s pgsql: image: 'postgres:13' ports: - '${FORWARD_DB_PORT:-5432}:5432' environment: PGPASSWORD: '${DB_PASSWORD:-secret}' POSTGRES_DB: '${DB_DATABASE}' POSTGRES_USER: '${DB_USERNAME}' POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}' volumes: - 'sailpgsql:/var/lib/postgresql/data' networks: - sail healthcheck: test: ["CMD", "pg_isready", "-q", "-d", "${DB_DATABASE}", "-U", "${DB_USERNAME}"] retries: 3 timeout: 5s meilisearch: image: 'getmeili/meilisearch:latest' ports: - '${FORWARD_MEILISEARCH_PORT:-7700}:7700' volumes: - 'sail-meilisearch:/meili_data' networks: - sail healthcheck: test: ["CMD", "wget", "--no-verbose", "--spider", "http://localhost:7700/health"] retries: 3 timeout: 5s mailhog: image: 'mailhog/mailhog:latest' ports: - '${FORWARD_MAILHOG_PORT:-1025}:1025' - '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025' networks: - sail selenium: image: 'selenium/standalone-chrome' extra_hosts: - 'host.docker.internal:host-gateway' volumes: - '/dev/shm:/dev/shm' networks: - sail networks: sail: driver: bridge volumes: sail-mysql: driver: local sail-redis: driver: local sail-meilisearch: driver: local sailpgsql: driver: local sailelasticsearch: driver: local
بعد ذلك ، قم بتشغيل الأمر أدناه لسحب صورة Elasticsearch الجديدة التي أضفتها إلى ملف docker-compose.yml .
docker-compose up
بعد ذلك ، قم بتنفيذ أمر Composer أدناه لتثبيت Explorer في المشروع.
composer require jeroen-g/explorer
تحتاج أيضًا إلى إنشاء ملف تكوين لبرنامج تشغيل Explorer.
قم بتنفيذ الأمر Artisan أدناه لإنشاء ملف explorer.config لتخزين التكوينات.
php artisan vendor:publish --tag=explorer.config
سيكون ملف التكوين الذي تم إنشاؤه أعلاه متاحًا في دليل / config .
في ملف config / explorer.php الخاص بك ، يمكنك الرجوع إلى نموذجك باستخدام مفتاح indexes
.
'indexes' => [ \App\Models\Train::class ],
قم بتغيير قيمة متغير SCOUT_DRIVER
داخل ملف .env إلى elastic
لتكوين Scout لاستخدام برنامج تشغيل Explorer.
SCOUT_DRIVER = elastic
في هذه المرحلة ، ستستخدم Explorer في نموذج Train
من خلال تنفيذ واجهة Explorer وتجاوز طريقة mappableAs()
.
افتح ملف Train.php داخل دليل التطبيقات> النماذج واستبدل الكود الموجود بالرمز أدناه.
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use JeroenG\Explorer\Application\Explored; use Laravel\Scout\Searchable; class Train extends Model implements Explored { use HasFactory; use Searchable; protected $fillable = ['title']; public function mappableAs(): array { return [ 'id'=>$this->Id, 'title' => $this->title, ]; } }
باستخدام الرمز الذي أضفته أعلاه ، يمكنك الآن استخدام Explorer للبحث عن نص داخل نموذج Train
.
ملخص
بالنسبة لمطوري PHP ، فإن Laravel والوظائف الإضافية مثل Scout تجعل من السهل دمج وظائف البحث عن النص الكامل السريعة والقوية. باستخدام محرك قاعدة البيانات ومحرك التجميع وإمكانيات Meilisearch و Elasticsearch ، يمكنك التفاعل مع قاعدة بيانات تطبيقك وتنفيذ آليات بحث متقدمة في أجزاء من الثانية فقط.
تعني إدارة قاعدة البيانات وتحديثها بسلاسة أن المستخدمين يتلقون تجربة مثالية بينما تظل التعليمات البرمجية الخاصة بك نظيفة وفعالة.
من خلال حلول استضافة التطبيقات وقواعد البيانات ، Kinsta هو متجرك الشامل لجميع احتياجات تطوير Laravel الحديثة. أول 20 دولارًا علينا.