Використання повнотекстового пошуку в Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 18 лютого, 2025
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Laravel надає потужні можливості для повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до даних, порівняно з базовими умовами LIKE.

# Технічні вимоги

Методи whereFullText інтегруються безпосередньо з можливостями повнотекстового пошуку вашої бази даних. Ось приклад базової реалізації:

use Illuminate\Support\Facades\DB;
$users = DB::table('users')
    ->whereFullText('bio', 'web developer')
    ->get();

На основі цього ви можете створити більш розширену функціональність пошуку для блогу чи системи керування контентом. Наступний приклад демонструє пошук по кількох стовпцях із можливістю фільтрації за категорією:

// ArticleController.php
public function search(Request $request)
{
    return Article::query()
        ->whereFullText(['title', 'content'], $request->search)
        ->when($request->category, function ($query, $category) {
            $query->where('category', $category);
        })
        ->orderBy('published_at', 'desc')
        ->paginate(15);
}
// Міграція
Schema::create('articles', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->string('category');
    $table->timestamp('published_at');
    $table->fullText(['title', 'content']);
});

Laravel автоматично генерує відповідний SQL-синтаксис для вашої системи бази даних. Для MariaDB та MySQL за замовчуванням використовуються запити з використанням операторів MATCH AGAINST у природному мовному режимі.

Цей підхід спрощує реалізацію складного пошуку, зберігаючи ефективність запитів для застосунків середнього розміру. Якщо вашій системі потрібні розширені пошукові можливості або обробка великих обсягів даних, рекомендується розглянути можливість використання спеціалізованих служб пошуку, таких як Elasticsearch або Meilisearch