Laravel + Meilisearch ile Süper Hızlı Arama Motoru

L

Elasticsearch’e Modern, Hafif ve Açık Kaynak Bir Alternatif

Giriş

Modern web uygulamalarında arama özelliği artık bir “ekstra” değil, kullanıcı deneyiminin merkezinde yer alan kritik bir bileşen haline geldi. Kullanıcılar; hızlı, hataya toleranslı ve doğru sonuçlar sunan arama sistemleri bekliyor. Ancak bu beklentiyi karşılamak için kullanılan çözümler çoğu zaman karmaşık ve maliyetli olabiliyor.

Özellikle Laravel projelerinde Elasticsearch gibi güçlü ama ağır çözümler; kurulum, bakım ve kaynak tüketimi açısından her proje için ideal olmayabiliyor. Bu noktada Meilisearch, açık kaynak yapısı, yüksek performansı ve geliştirici dostu API’siyle öne çıkan modern bir arama motoru olarak dikkat çekiyor.

Bu yazıda, Laravel + Meilisearch entegrasyonunu, Laravel Scout kullanarak arama altyapısının nasıl kurulacağını, çok dilli arama desteğinin nasıl sağlanacağını ve neden Meilisearch’in Elasticsearch’e güçlü bir alternatif olduğunu adım adım ve uygulamalı örneklerle ele alacağız.

Meilisearch Nedir?

Meilisearch, modern uygulamalar için geliştirilmiş, açık kaynaklı ve son derece hızlı bir full-text search engine’dir. Özellikle şu özellikleriyle öne çıkar:

  • Milisaniyeler içinde arama sonuçları

  • Typo tolerance (yazım hatalarına tolerans)

  • Relevance (alaka) odaklı sıralama

  • Basit REST API

  • Çok dilli arama desteği

  • Düşük sistem kaynağı tüketimi

Meilisearch’in temel felsefesi şudur:

“Minimum konfigürasyon ile maksimum arama performansı”

Meilisearch vs Elasticsearch

Kısa ama net bir karşılaştırma yapmak gerekirse:

Özellik Meilisearch Elasticsearch
Kurulum Çok kolay Karmaşık
Kaynak tüketimi Düşük Yüksek
Öğrenme eğrisi Düşük Yüksek
Laravel entegrasyonu Çok kolay Orta
Küçük/orta projeler ✅ Çok uygun ❌ Gereksiz ağır
Büyük veri analizi ❌ Sınırlı ✅ Çok güçlü

Blog, e-ticaret, içerik platformları ve SaaS projeleri için Meilisearch genellikle daha mantıklı bir tercihtir.

Laravel’de Meilisearch Kullanmanın Avantajları

Laravel ekosistemi içinde Meilisearch kullanmanın en büyük avantajı, Laravel Scout ile kusursuz entegrasyonudur.

  • Eloquent modelleri doğrudan indeksleyebilme

  • Arama kodlarının sade ve okunabilir olması

  • Queue desteği

  • Kolay çok dilli yapı kurulumu

Laravel + Meilisearch Kurulumu

1. Meilisearch Kurulumu

Docker kullananlar için (önerilen):

docker run -it --rm \
  -p 7700:7700 \
  -e MEILI_MASTER_KEY=masterKey \
  getmeili/meilisearch

2. Laravel Scout Kurulumu

composer require laravel/scout
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

3. Scout Ayarları (.env)

SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=masterKey

Model Entegrasyonu (Searchable Trait)

Örnek bir Post modeli:

use Laravel\Scout\Searchable;

class Post extends Model
{
    use Searchable;

    protected $fillable = [
        'title',
        'content',
        'language'
    ];

    public function toSearchableArray()
    {
        return [
            'title'   => $this->title,
            'content' => $this->content,
            'language'=> $this->language,
        ];
    }
}

Verileri Meilisearch’e Aktarma

php artisan scout:import "App\Models\Post"

Bu işlemle mevcut tüm kayıtlar Meilisearch indeksine aktarılır.

Arama İşlemi (Basit Kullanım)

$posts = Post::search('laravel')->get();

Typo tolerance otomatik olarak devrededir:

  • laravel

  • larvel

  • laravelr

hepsi sonuç döner.

Gelişmiş Arama (Filtreleme)

Post::search('api')
    ->where('language', 'tr')
    ->get();

Bu yapı özellikle çok dilli projeler için kritik öneme sahiptir.

Çok Dilli Arama Desteği (Multi-Language Search)

1. Dil Alanı Kullanımı

Veritabanında:

language: tr | en | de

2. Dil Bazlı Arama

Post::search($keyword)
    ->where('language', app()->getLocale())
    ->get();

3. Ayrı İndeks Kullanımı (Alternatif Yöntem)

public function searchableAs()
{
    return 'posts_' . $this->language;
}

Bu yöntem SEO açısından daha temiz ve daha kontrollü sonuçlar üretir.

Relevance ve Ranking Ayarları

Meilisearch varsayılan olarak oldukça başarılıdır ancak daha iyi sonuçlar için:

'title',
'content'

öncelik sıralaması ayarlanabilir.

curl -X PATCH 'http://localhost:7700/indexes/posts/settings/ranking-rules'

Queue ile Performanslı İndeksleme

Büyük projelerde:

SCOUT_QUEUE=true

Bu sayede indeksleme işlemleri kullanıcıyı bekletmez.

Gerçek Hayat Kullanım Senaryoları

Meilisearch şu projelerde ciddi fark yaratır:

  • Blog & içerik platformları

  • E-ticaret ürün aramaları

  • SaaS dashboard aramaları

  • Admin panel filtreleme sistemleri

  • Çok dilli içerik siteleri

SEO Açısından Meilisearch

Meilisearch doğrudan SEO aracı değildir ancak:

  • Hızlı sonuç → düşük bounce rate

  • Doğru sonuç → yüksek kullanıcı etkileşimi

  • İçerik keşfi → daha fazla sayfa gezilmesi

Bu metrikler dolaylı olarak SEO performansını olumlu etkiler.

Sonuç

Laravel projelerinde hızlı, kolay ve sürdürülebilir bir arama altyapısı kurmak istiyorsanız Meilisearch + Laravel Scout ikilisi güncel, modern ve güçlü bir çözümdür. Elasticsearch’ün getirdiği karmaşıklığı ve maliyeti yaşamadan, kullanıcıya üst düzey bir arama deneyimi sunmak mümkündür.

Özellikle içerik ağırlıklı ve çok dilli Laravel projelerinde Meilisearch, 2025 itibarıyla en mantıklı arama motoru tercihlerinden biri olarak öne çıkmaktadır.

By Aydın Yağız

Aydın Yağız

Teknolojiye olan tutkumla inovasyonu destekler, kullanıcı deneyimini önceliklerim arasına alırım. Kendi yeteneklerimi ve bilgilerimi paylaşarak, daha geniş bir topluluğun faydalanmasını sağlarım. İş birliği içinde hareket ederek, geleceğin teknoloji dünyasına katkıda bulunmayı hedeflerim. Sizi de bu heyecan verici yolculuğa davet ediyor, fikirlerinizi paylaşmaya ve teknolojiye dair sınırları zorlamaya teşvik ediyorum. Birlikte büyüyelim ve yeni ufuklara açılalım!

İletişime Geçin

Kodlama dünyasına adım atın ve deneyimlerinizi paylaşın. Siz de bu aktif topluluğa katılarak yeni bağlantılar kurun, fikir alışverişinde bulunun ve bilgi birikiminizi artırın.

Özelleştir

Farklı yazı tipleri ve renk seçenekleriyle stilinizi kişiselleştirin. Aşağıdaki örneklerden birini deneyerek sizin için en uygun olanı seçin.

Yazı Tipi Örnekleri

Renk Örnekleri