Потужний пошук в Laravel за допомогою Solr

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 21 листопада, 2024
Вам колись доводилося впроваджувати функцію пошуку у вашому додатку? Дізнайтеся, як пакет Laravel-Solr забезпечує безшовну інтеграцію з Apache Solr, щоб покращити можливості пошуку у ваших Laravel-додатках

Якщо ви коли-небудь потребували реалізувати функцію пошуку у вашій програмі, напевно, вам відомий Apache Solr. Solr — це швидка, відкрита платформа для пошуку, створена на основі можливостей повнотекстового, векторного та геопросторового пошуку Apache Lucene.

Розробник Хайдер Джаббар Абдулла створив пакет Laravel-Solr, який забезпечує бездоганну інтеграцію з Apache Solr. Це дозволяє розробникам Laravel ефективно використовувати потужні можливості пошуку Solr безпосередньо в їхніх додатках.

# Основні особливості

Щоб встановити цей пакет, виконайте команду:

composer require haiderjabbar/laravelsolr

Далі додайте постачальника послуг до вашого config/app.php:

'providers' => [
    // ...
    haiderjabbar\laravelsolr\LaravelSolrServiceProvider::class,
];

Необхідно також опублікувати файл конфігурації config/solr.php:

php artisan vendor:publish --provider="haiderjabbar\laravelsolr\LaravelSolrServiceProvider"

Коли ви завершите налаштування, потрібно створити core (якщо його ще немає). У Solr термін core позначає один індекс і відповідний лог транзакцій. Ви можете створити кілька корів, щоб індексувати дані з різними структурами на одному сервері, що дозволяє краще контролювати подання даних для різних користувачів.

# Створення нового Solr core та файлу міграції
php artisan solr:create-core coreName

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

Необхідно визначити поля, які будуть в наших документах; для цього виконайте:

# Створення нових полів Solr з необов'язковими батьківськими полями
php artisan solr:create-fields coreName

Ця команда дозволяє вам вказати ім'я, тип та чи є поле багатозначним, обов'язковим чи індексованим.

Після визначення полів ви можете почати додавати документи. Для цього можна написати:

use haiderjabbar\laravelsolr\Models\SolrModel;
 
$coreName = 'your_core_name';
$data = [
    'id' => 'unique_id',
    'name' => 'document_name',
    // ... інші поля
];
 
$result = SolrModel::addDocument($coreName, $data);

Пакет Laravel-Solr також має QueryBuilder, який забезпечує звичний інтерфейс для пошуку та повернення документів.

use haiderjabbar\laravelsolr\Services\SolrQueryBuilder;
 
$builder = new SolrQueryBuilder($coreName);
 
// Базовий пошук
$builder->search('field', '=', 'value', $boost);
 
// Умови пошуку
$builder->where('field', '=', 'value', $priority);
 
// Сортування та пагінація
$builder
    ->sort('field asc')    // Додати сортування
    ->start(0)             // Початковий зсув (пагінація)
    ->rows(10);            // Кількість рядків для повернення
 
$results = $builder->get();

# Додаткові команди

# Оновлення Solr core з новою назвою
php artisan solr:update-core
 
# Видалення Solr core та його файлу міграції
php artisan solr:delete-core coreName
 
# Оновлення існуючих полів Solr core
php artisan solr:update-fields
 
# Видалення полів з Solr core
php artisan solr:delete-fields

Більше інформації про цей пакет можна знайти на GitHub.