Швидкий та зручний пошук для Laravel. Миттєві результати, просте налаштування. Дізнайтеся більше про Typesense на GitHub!
Розпочати роботу з Typesense просто. Вони пропонують два варіанти: самостійно хостингова версія, яку можна встановити через бінарні пакети або за допомогою офіційного Docker-образу. Або, якщо вам зручніше, скористайтеся їх хмарним сервісом і відразу розпочніть роботу.
# Функції Typesense
- Терпимість до помилок: Чудове оброблення типографічних помилок без додаткових налаштувань.
- Простота та привабливість: Легко налаштувати, інтегрувати, експлуатувати та масштабувати.
- ⚡ Швидкість: Створено на C++. Ретельно спроектовано для миттєвого пошуку з низькою затримкою (<50 мс).
- Налаштовувані рейтинги: Легко підлаштувати результати пошуку під ваші потреби.
- Сортування: Динамічне сортування результатів за певним полем під час запиту (зручно, наприклад, для "Сортувати за ціною (за зростанням)").
- Фасетування та фільтрація: Уточнюйте результати.
- Групування та унікальність: Групуйте схожі результати для більшої різноманітності.
- Федеративний пошук: Шукайтe в декількох колекціях (індексах) за одним HTTP-запитом.
- Геопошук: Шукайтe та сортуйте результати за координатами або в межах прямокутника.
- Векторний пошук: Індеціюйте вектори з ваших машинного навчання в Typesense та здійснюйте пошук найближчих сусідів.
- Семантичний/Гібридний пошук: Автоматично генеруйте вектори з вбудованих моделей Typesense або використовуйте OpenAI, PaLM API для запитів і даних.
- Розмовний пошук (вбудована RAG): Надсилайте питання в Typesense і отримуйте відповіді у вигляді повних речень на основі ваших даних.
- Пошук зображень: Шукайте за описами вмісту зображень або виконуйте пошуки схожості за допомогою моделі CLIP.
- Голосовий пошук: Збирайте та надсилайте запити голосовими записами - Typesense їх транскрибує (через модель Whisper) і надає результати пошуку.
- API-ключі з обмеженнями: Генеруйте ключі API, які дозволяють доступ лише до певних записів для багатокористувацьких додатків.
- JOIN-зв'язки: З'єднуйте одну або кілька колекцій через спільні поля й об'єднуйте їх під час запиту.
- Синоніми: Визначте слова як еквіваленти, щоб пошук за одним із них повертав результати для всіх синонімів.
- Курація та мерчандайзинг: Підвищуйте видимість певних записів у результатах пошуку.
- Кластеризація на базі Raft: Налаштуйте розподілений кластер з високою доступністю.
- Безшовні оновлення версій: Оновлення нових версій Typesense - це просто заміна бінарного файлу та перезапуск сервісу.
- Без залежностей під час виконання: Typesense - це єдиний бінарний файл, який можна запускати локально або в продакшені з однієї команди.
# Встановлення Typesense
Варіант 1: Завантажте бінарні пакети для Linux (x86_64 та arm64) та Mac (x86_64).
Варіант 2: Запустіть Typesense з офіційного Docker-образу.
Варіант 3: Розгорніть керований кластер за допомогою Typesense Cloud:
# Typesense з Laravel
Із Laravel Scout інтеграція з вашим додатком Laravel максимально проста. Просто додайте Laravel Scout та Typesense:
composer require laravel/scout
composer require typesense/typesense-php
Далі, налаштуйте змінні середовища у файлі .env вашого додатка:
SCOUT_DRIVER=typesense
TYPESENSE_API_KEY=masterKey
TYPESENSE_HOST=localhost
Додайте трейти Searchable до вашої моделі:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Post extends Model
{
use Searchable;
}
І додайте функцію toSearchableArray
:
/**
* Отримати дані для індексації моделі.
*
* @return array<string, mixed>
*/
public function toSearchableArray()
{
return array_merge($this->toArray(),[
'id' => (string) $this->id,
'created_at' => $this->created_at->timestamp,
]);
}
Ви можете ознайомитися з офіційною документацією Laravel Scout тут для детальної інформації.