Tam Metin Aramayı Etkinleştirmek için Laravel Scout'u Kullanma
Yayınlanan: 2023-05-08Laravel çerçevesi, web hizmetleri oluşturan geliştiriciler için başvurulacak bir kaynak haline geldi.
Açık kaynaklı bir araç olarak Laravel, geliştiricilerin sağlam ve işlevsel uygulamalar oluşturmasını sağlayan çok sayıda kullanıma hazır işlevsellik sunar.
Teklifleri arasında, uygulamanız için arama dizinlerini yönetmek için bir kitaplık olan Laravel Scout yer alır. Esnekliği, geliştiricilerin yapılandırmalarda ince ayar yapmasına ve dizinleri depolamak için Algolia, Meilisearch, MySQL veya Postgres sürücüleri arasından seçim yapmasına olanak tanır.
Burada, sürücü aracılığıyla bir Laravel uygulamasına tam metin arama desteğinin nasıl ekleneceğini öğreterek bu aracı derinlemesine inceleyeceğiz. Örnek trenlerin adını saklamak için bir demo Laravel uygulaması modelleyeceksiniz ve ardından uygulamaya bir arama eklemek için Laravel Scout'u kullanacaksınız.
Önkoşullar
Takip etmek için şunlara sahip olmalısınız:
- Bilgisayarınızda kurulu PHP derleyicisi. Bu öğretici, PHP sürüm 8.1'i kullanır.
- Bilgisayarınızda yüklü olan Docker motoru veya Docker Desktop
- Ücretsiz olarak oluşturabileceğiniz bir Algolia bulut hesabı
Bir Laravel Projesine Scout Nasıl Kurulur
Scout'u kullanmak için öncelikle arama işlevini eklemek istediğiniz bir Laravel uygulaması oluşturmalısınız. Laravel-Scout Bash betiği, bir Docker kapsayıcısı içinde bir Laravel uygulaması oluşturmaya yönelik komutları içerir. Docker'ı kullanmak, MySQL veritabanı gibi ek destekleyici yazılım yüklemeniz gerekmediği anlamına gelir.
Laravel-scout betiği, Bash betik dilini kullanır, dolayısıyla onu bir Linux ortamında çalıştırmanız gerekir. Windows çalıştırıyorsanız, Linux için Windows Alt Sistemini (WSL) yapılandırdığınızdan emin olun.
WSL kullanıyorsanız, tercih ettiğiniz Linux dağıtımını ayarlamak için terminalinizde aşağıdaki komutu yürütün.
wsl -s ubuntu
Ardından, bilgisayarınızda projeyi yerleştirmek istediğiniz konuma gidin. Laravel-Scout betiği burada bir proje dizini oluşturacaktır. Aşağıdaki örnekte, Laravel-Scout betiği, masaüstü dizini içinde bir dizin oluşturacaktır.
cd /desktop
Laravel-Scout betiğini çalıştırmak için aşağıdaki komutu çalıştırın. Dockerize edilmiş bir uygulamayı gerekli standart kodla bir iskele haline getirecektir.
curl -s https://laravel.build/laravel-scout-app | bash
Yürütmeden sonra dizininizi cd laravel-scout-app
kullanarak değiştirin. Ardından, uygulamanız için Docker kapsayıcılarını başlatmak üzere proje klasörü içinde sail-up
komutunu çalıştırın.
Not: Birçok Linux dağıtımında, yükseltilmiş ayrıcalıkları başlatmak için aşağıdaki komutu sudo
komutuyla çalıştırmanız gerekebilir.
./vendor/bin/sail up
Bir hatayla karşılaşabilirsiniz:
Bunu çözmek için, sail up
komutunda bir bağlantı noktası belirtmek için APP_PORT
değişkenini kullanın:
APP_PORT=3001 ./vendor/bin/sail up
Ardından, uygulamayı PHP sunucusunda Artisan aracılığıyla çalıştırmak için aşağıdaki komutu yürütün.
php artisan serve
Web tarayıcınızdan http://127.0.0.1:8000 adresinde çalışan uygulamaya gidin. Uygulama, varsayılan rotada Laravel karşılama sayfasını görüntüler.
Uygulamaya Laravel Scout Nasıl Eklenir?
Terminalinizde, Composer PHP paket yöneticisinin projeye Laravel Scout'u eklemesini sağlamak için komutu girin.
composer require laravel/scout
Ardından, vendor:publish komutunu kullanarak Scout yapılandırma dosyasını yayınlayın. Komut, scout.php
yapılandırma dosyasını uygulamanızın yapılandırma dizinine yayınlayacaktır.
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Şimdi, ortak metin .env dosyasını bir SCOUT_QUEUE
boolean değeri içerecek şekilde değiştirin.
SCOUT_QUEUE
değeri, Scout'un operasyonları kuyruğa almasına izin vererek daha iyi yanıt süreleri sağlar. Bu olmadan, Meilisearch gibi Scout sürücüleri yeni rekorları hemen yansıtmaz.
SCOUT_QUEUE=true
Ayrıca, .env dosyasındaki DB_HOST
değişkenini, Docker kapsayıcılarında MySQL veritabanını kullanmak üzere yerel ana makinenize işaret edecek şekilde değiştirin.
DB_HOST=127.0.0.1
Bir Modeli İşaretleme ve Dizini Yapılandırma
Scout, aranabilir veri modellerini varsayılan olarak etkinleştirmez. Laravel\Scout\Searchable
özelliğini kullanarak bir modeli açıkça aranabilir olarak işaretlemelisiniz.
Bir demo Train
uygulaması için bir veri modeli oluşturarak ve onu aranabilir olarak işaretleyerek başlayacaksınız.
Model Nasıl Oluşturulur
Train
uygulaması için, mevcut her trenin yer tutucu adlarını saklamak isteyeceksiniz.
Geçişi oluşturmak ve bunu create_trains_table
olarak adlandırmak için aşağıdaki Artisan komutunu yürütün.
php artisan make:migration create_trains_table
Geçiş, adı belirtilen adla geçerli zaman damgasını birleştiren bir dosyada oluşturulur.
Database/migrations/ dizininde bulunan taşıma dosyasını açın.
Bir başlık sütunu eklemek için, 17. satırdaki id()
sütunundan sonra aşağıdaki kodu ekleyin. Kod, bir başlık sütunu ekleyecektir.
$table->string('title');
Geçişi uygulamak için aşağıdaki komutu yürütün.
php artisan migrate
Veritabanı geçişlerini çalıştırdıktan sonra app/Models/ dizininde Train.php adlı bir dosya oluşturun.
LaravelScoutSearchable Özelliği Nasıl Eklenir?
Aşağıda gösterildiği gibi modele Laravel\Scout\Searchable
özelliğini ekleyerek Train
modelini arama için işaretleyin.
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Laravel\Scout\Searchable; class Train extends Model { use Searchable; public $fillable = ['title'];
Ayrıca, searchable
yöntemi geçersiz kılarak arama dizinlerini yapılandırmanız gerekir. Scout'un varsayılan davranışı, modelin model tablo adıyla eşleşmesini sağlar.
Bu nedenle, önceki bloktaki kodun altındaki Train.php dosyasına aşağıdaki kodu ekleyin.
/** * Retrieve the index name for the model. * * @return string */ public function searchableAs() { return 'trains_index'; } }
Scout ile Algolia Nasıl Kullanılır
Laravel Scout ile ilk tam metin araması için Algolia sürücüsünü kullanacaksınız. Algolia, büyük miktarda veriyi aramak için kullanılan bir hizmet olarak yazılım (SaaS) platformudur. Geliştiricilerin arama dizinlerini yönetmeleri için bir web panosu ve tercih ettiğiniz programlama dilinde bir yazılım geliştirme kiti (SDK) aracılığıyla erişebileceğiniz sağlam bir API sağlar.
Laravel uygulaması içerisinde PHP için Algolia client paketini kullanacaksınız.
Algolia Nasıl Kurulur
Öncelikle, uygulamanız için Algolia PHP arama istemci paketini kurmalısınız.
Aşağıdaki komutu yürütün.
composer require algolia/algoliasearch-client-php
Ardından, .env dosyasında Algolia'dan Uygulama Kimliğinizi ve Gizli API Anahtarı kimlik bilgilerinizi ayarlamanız gerekir.
Uygulama Kimliği ve Gizli API Anahtarı kimlik bilgilerini almak için web tarayıcınızı kullanarak Algolia panonuza gidin.
Ayarlar sayfasına gitmek için sol taraftaki kenar çubuğunun altındaki Ayarlar'a tıklayın.
Ardından, Algolia hesabınızın anahtarlarını görüntülemek için Ayarlar sayfasının Ekip ve Erişim bölümündeki API Anahtarları'na tıklayın.
API Anahtarları sayfasında, Uygulama Kimliği ve Yönetici API Anahtarı değerlerini not edin. Laravel uygulaması ile Algolia arasındaki bağlantıyı doğrulamak için bu kimlik bilgilerini kullanacaksınız.
Kod düzenleyicinizi kullanarak aşağıdaki kodu .env dosyanıza ekleyin ve yer tutucuları karşılık gelen Algolia API sırlarıyla değiştirin.
ALGOLIA_APP_ID=APPLICATION_ID ALGOLIA_SECRET=ADMIN_API_KEY
Ayrıca, meilisearch
değerini algolia
olarak değiştirmek için SCOUT_DRIVER
değişkenini aşağıdaki kodla değiştirin. Bu değerin değiştirilmesi, Scout'a Algolia sürücüsünü kullanması talimatını verecektir.
SCOUT_DRIVER=algolia
Uygulama Denetleyicileri Nasıl Oluşturulur
app/Http/Controllers/ dizini içinde, uygulama için bir denetleyici depolamak üzere bir TrainSearchController.php dosyası oluşturun. Denetleyici, Train
modeline veri listeleyecek ve ekleyecektir.
Denetleyiciyi oluşturmak için aşağıdaki kod bloğunu TrainSearchController.php dosyasına ekleyin.
<?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(); } }
Uygulama Rotaları Nasıl Oluşturulur
Bu adımda, veritabanına yeni trenleri listelemek ve eklemek için rotalar oluşturacaksınız.
Routes/web.php dosyanızı açın ve mevcut kodu aşağıdaki blokla değiştirin.
<?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');
Yukarıdaki kod, uygulamada iki rota tanımlar. /trains-lists
rotası için GET
isteği, saklanan tüm tren verilerini listeler. /create-item
yolu için POST
isteği, yeni tren verileri oluşturur.
Uygulama Görünümleri Nasıl Oluşturulur
resources/views/ dizini içinde bir dosya oluşturun ve Train-search.blade.php olarak adlandırın. Dosya, arama işlevi için kullanıcı arabirimini görüntüler.
Arama işlevi için tek bir sayfa oluşturmak üzere aşağıdaki kod bloğunun içeriğini Train-search.blade.php dosyasına ekleyin.
<!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>
Yukarıdaki HTML kodu, veri tabanına kaydetmeden önce bir trenin adını yazmak için bir giriş alanı ve bir düğme içeren bir form öğesi içerir. Kod ayrıca, veritabanındaki bir tren girişinin id , title , create_at ve update_at ayrıntılarını gösteren bir HTML tablosuna sahiptir.
Algolia Araması Nasıl Kullanılır?
Sayfayı görüntülemek için web tarayıcınızdan http://127.0.0.1:8000/trains-lists adresine gidin.
Veritabanı şu anda boş, bu nedenle giriş alanına bir demo tren başlığı girmeniz ve kaydetmek için Yeni Tren Oluştur'a tıklamanız gerekiyor.
Arama özelliğini kullanmak için, kayıtlı herhangi bir tren başlığından bir anahtar kelimeyi Arama İçin Başlık Girin giriş alanına yazın ve Ara'yı tıklayın.
Aşağıdaki resimde gösterildiği gibi, yalnızca başlıklarında anahtar kelime içeren arama girişleri görüntülenecektir.
Laravel Scout ile Meilisearch
Meilisearch, hız, performans ve geliştirilmiş geliştirici deneyimine odaklanan açık kaynaklı bir arama motorudur. Aynı algoritmaları, veri yapılarını ve araştırmayı kullanarak, ancak farklı bir programlama diliyle Algolia ile birkaç özelliği paylaşır.
Geliştiriciler, şirket içi veya bulut altyapılarında bir Meilisearch örneği oluşturabilir ve kendi bünyesinde barındırabilir. Meilisearch ayrıca, ürünü altyapısını yönetmeden kullanmak isteyen geliştiriciler için Algolia'ya benzer bir beta bulut teklifine sahiptir.
Öğreticide, Docker kapsayıcılarınızda çalışan yerel bir Meilisearch örneğine zaten sahipsiniz. Şimdi Meilisearch örneğini kullanmak için Laravel Scout işlevini genişleteceksiniz.
Meilisearch'ü Laravel uygulamasına eklemek için proje terminalinizde aşağıdaki komutu çalıştırın.
composer require meilisearch/meilisearch-php
Ardından, yapılandırmak için .env dosyası içindeki Meilisearch değişkenlerini değiştirmeniz gerekir.
.env dosyasındaki SCOUT_DRIVER
, MEILISEARCH_HOST
ve MEILISEARCH_KEY
değişkenlerini aşağıdakilerle değiştirin.
SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=LockKey
SCOUT_DRIVER
anahtarı, Scout'un kullanması gereken sürücüyü belirtirken MEILISEARCH_HOST
, Meilisearch örneğinizin çalıştığı etki alanını temsil eder. Geliştirme sırasında gerekli olmasa da, üretimde MEILISEARCH_KEY
eklenmesi önerilir.
Not: Meilisearch'ü tercih ettiğiniz sürücü olarak kullanırken Algolia Kimliği ve Sırrı'nı yorumlayın.
.env yapılandırmalarını tamamladıktan sonra, önceden var olan kayıtlarınızı aşağıdaki Artisan komutunu kullanarak dizine eklemelisiniz.
php artisan scout:import "App\Models\Train"
Veritabanı Motorlu Laravel Scout
Scout'un veritabanı motoru, daha küçük veritabanları kullanan veya daha az yoğun iş yüklerini yöneten uygulamalar için en uygun olabilir. Şu anda, veritabanı motoru PostgreSQL ve MySQL'i desteklemektedir.
Bu motor, mevcut veritabanınıza karşı "where-like" yan tümceleri ve tam metin dizinleri kullanarak en alakalı arama sonuçlarını bulmasını sağlar. Veritabanı motorunu kullanırken kayıtlarınızı indekslemenize gerek yoktur.
Veritabanı motorunu kullanmak için SCOUT_DRIVER
.env değişkeninizi veritabanına ayarlamalısınız.
.env dosyasını Laravel uygulamasında açın ve SCOUT_DRIVER
değişkeninin değerini değiştirin.
SCOUT_DRIVER = database
Sürücünüzü veri tabanına değiştirdikten sonra Scout, tam metin araması için veri tabanı motorunu kullanmaya geçiş yapacaktır.
Laravel Scout ile Toplama Motoru
Scout, veritabanı motoruna ek olarak bir toplama motoru da sunar. Bu motor, en alakalı arama sonuçlarını çıkarmak için "where" yan tümcelerini ve koleksiyon filtrelemeyi kullanır.
Veritabanı motorunun aksine toplama motoru, Laravel'in de desteklediği tüm ilişkisel veritabanlarını destekler.
Koleksiyon motorunu, SCOUT_DRIVER
ortam değişkenini collection
olarak ayarlayarak veya koleksiyon sürücüsünü Scout yapılandırma dosyasında manuel olarak belirterek kullanabilirsiniz.
SCOUT_DRIVER = collection
Elasticsearch ile Gezgin
Elasticsearch sorgularının gücüyle Explorer, Laravel Scout için modern bir Elasticsearch sürücüsüdür. Uyumlu bir Scout sürücüsü ve çok büyük miktarda veriyi gerçek zamanlı olarak depolama, arama ve analiz etme gibi avantajlar sunar. Laravel ile Elasticsearch milisaniye cinsinden sonuçlar sunar.
Laravel uygulamanızda Elasticsearch Explorer sürücüsünü kullanmak için Laravel-Scout betiğinin oluşturduğu ortak docker-compose.yml dosyasını yapılandırmanız gerekir. Elasticsearch için ek yapılandırmalar ekleyeceksiniz ve kapları yeniden başlatacaksınız.
docker-compose.yml dosyanızı açın ve içeriğini aşağıdakiyle değiştirin.
# 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
Ardından, eklediğiniz yeni Elasticsearch görüntüsünü docker-compose.yml dosyasına çekmek için aşağıdaki komutu çalıştırın.
docker-compose up
Ardından, Explorer'ı projeye yüklemek için aşağıdaki Composer komutunu yürütün.
composer require jeroen-g/explorer
Ayrıca Explorer sürücüsü için bir yapılandırma dosyası oluşturmanız gerekir.
Yapılandırmaları depolamak için bir explorer.config dosyası oluşturmak üzere aşağıdaki Artisan komutunu yürütün.
php artisan vendor:publish --tag=explorer.config
Yukarıda oluşturulan yapılandırma dosyası /config dizininde mevcut olacaktır.
config/explorer.php dosyanızda, indexes
anahtarını kullanarak modelinize başvurabilirsiniz.
'indexes' => [ \App\Models\Train::class ],
Scout'u Explorer sürücüsünü kullanacak şekilde yapılandırmak için .env dosyasındaki SCOUT_DRIVER
değişkeninin değerini elastic
olarak değiştirin.
SCOUT_DRIVER = elastic
Bu noktada, Explorer arayüzünü uygulayarak ve mappableAs()
yöntemini geçersiz kılarak Train
modeli içinde Explorer'ı kullanacaksınız.
Uygulama > Modeller dizininde Train.php dosyasını açın ve mevcut kodu aşağıdaki kodla değiştirin.
<?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, ]; } }
Yukarıya eklediğiniz kod ile artık Train
modelinde metin aramak için Explorer'ı kullanabilirsiniz.
Özet
PHP geliştiricileri için Laravel ve Scout gibi eklentiler, hızlı, sağlam tam metin arama işlevselliğini entegre etmeyi çocuk oyuncağı haline getirir. Veritabanı Motoru, Koleksiyon Motoru ve Meilisearch ile Elasticsearch'ün yetenekleriyle, uygulamanızın veritabanıyla etkileşim kurabilir ve yalnızca milisaniyeler içinde gelişmiş arama mekanizmalarını uygulayabilirsiniz.
Veritabanınızı sorunsuz bir şekilde yönetmek ve güncellemek, kodunuz temiz ve verimli kalırken kullanıcılarınızın en iyi deneyimi alması anlamına gelir.
Uygulama ve Veritabanı Barındırma çözümlerimizle Kinsta, tüm modern Laravel geliştirme ihtiyaçlarınız için tek adresinizdir. İlk 20$ bizden.