Якщо ви коли-небудь потребували реалізувати функцію пошуку у вашій програмі, напевно, вам відомий 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.