Введение
Вы когда-нибудь замечали, как поисковые системы, такие как Google, предлагают текст по мере ввода? Это автодополнение в действии — функция, помогающая пользователям быстрее находить то, что они ищут, предоставляя предложения в реальном времени.
В этой статье мы покажем, как мы реализовали автодополнение в нашем демо‑поиске GitHub Issue с помощью Manticore Search. Независимо от того, создаёте ли вы похожую функцию или просто интересуетесь процессом, это руководство проведёт вас через основы.

Что понадобится
- Manticore Search 7.0.0 или новее
- Клиент Manticore Search PHP
- Базовые знания PHP
Базовая реализация
Хотя функция автодополнения требует клиентского JavaScript для пользовательского интерфейса (что мы здесь не рассматриваем), реализация серверной части проста. Просто создайте конечную точку, которая взаимодействует с Manticore Search с помощью официального PHP SDK для получения и возврата предложений.
$client = new Client();
$result = $client->autocomplete([
'body' => [
'table' => 'your_table',
'query' => 'user_input',
],
]);
Вот и всё! Эта конечная точка принимает ввод пользователя, делает запрос к Manticore Search и возвращает предложения. Сочетайте её с JavaScript на фронтенде для отображения результатов в реальном времени, и вы получите плавный опыт автодополнения.
Посмотрите в действии здесь .
Расширенные возможности
Хотя функция автодополнения работает хорошо сразу из коробки, её можно улучшить с помощью таких функций, как нечеткое совпадение и поддержка раскладки клавиатуры. Вот как реализовать эти возможности с использованием PHP‑клиента Manticore Search.
Добавление нечеткого совпадения
Пользователи делают опечатки — это случается. С нечетким совпадением вы можете возвращать релевантные предложения, даже если запросы набраны не идеально. Вот как включить эту функцию:
$result = $client->autocomplete([
'body' => [
'table' => 'your_table',
'query' => 'user_input',
'options' => [
'fuzziness' => 1
],
],
]);
Поддержка нескольких языков с раскладками клавиатуры
Если ваше приложение обслуживает пользователей на разных языках, поддержка раскладок клавиатуры может сыграть большую роль. Вот пример добавления поддержки раскладок для английского (США), украинского и русского языков:
$result = $client->autocomplete([
'body' => [
'table' => 'your_table',
'query' => 'user_input',
'options' => [
'fuzziness' => 1,
'layouts' => ['us', 'ru', 'ua']
],
],
]);
Это гарантирует, что пользователи получат точные предложения независимо от используемой раскладки клавиатуры.
Как мы сделали это: демонстрация поиска GitHub Issue
В нашем демо‑поиске Github Issue мы включаем функцию поиска как по задачам, так и по комментариям. Мы реализовали одну конечную точку, которая дважды запрашивает Manticore Search и объединяет результаты в единый ответ. Для подробностей реализации см. исходный код .
Фронтенд‑реализация использует чистый JavaScript с дебаунс‑обработчиками событий для эффективной обработки запросов. Посмотрите полную реализацию здесь .
Заключение
Реализация автодополнения с помощью PHP‑клиента Manticore Search проста и гибка. Сочетание нечеткого совпадения и поддержки раскладок клавиатуры делает её особенно эффективной для реальных приложений.
Для практического примера ознакомьтесь с нашим демо‑поиском GitHub Issue , где мы реализовали эти функции в продакшн‑среде.
