Tam Metin Aramayı Etkinleştirmek için Laravel Scout'u Kullanma

Yayınlanan: 2023-05-08

Laravel ç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ı
Uygulamanızı daha kullanıcı dostu yapmak ister misiniz? Tam metin arama desteği eklemeyi deneyin! İşte Laravel Scout ile böyle yapılır ️ Tweetlemek için tıklayın

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:

Bağlantı noktasının tahsis edildiğini belirten hata
Bağlantı noktasının tahsis edildiğini belirten hata.

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
Laravel uygulamasının Artisan ile sunulması
Laravel uygulamasının Artisan ile sunulması

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.

Laravel uygulamasının hoş geldiniz sayfası
Laravel uygulamasının hoş geldiniz sayfası

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
create_trains_table adlı bir geçiş yapma
create_trains_table adlı bir geçiş yapma

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
Artisan geçişini uygulama
Artisan geçişini uygulama

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.

Algolia Cloud'da API Anahtarları sayfasına gitme
Algolia Cloud'daki API Anahtarları sayfası

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.

Algolia API Anahtarları sayfasından Uygulama Kimliği ve Yönetici API Anahtarlarını görüntüleme
Uygulama Kimliği ve Yönetici API Anahtarları

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.

Tren listeleri sayfasında görüntülenen Tren modeli verilerini görüntüleme
Tren modeli verileri

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.

Yeni bir tren girişi ekleme
Yeni bir tren girişi ekleme

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.

Bir tren girişi bulmak için arama özelliğini kullanma
Bir tren girişi bulmak için arama özelliğini kullanma

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.

Laravel + Scout = hızlı, sağlam ve temiz tam metin arama entegrasyonu. Bir demo uygulama oluşturun ve bu kılavuzla deneyin ️ Tweetlemek için Tıklayın

Ö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.