Введение
Вы когда-нибудь замечали, как поисковые системы вроде Google подсказывают текст по мере ввода? Это и есть автодополнение — функция, которая помогает пользователям быстрее находить нужное, показывая подсказки в реальном времени.
В этой статье покажем, как мы реализовали автодополнение на PHP для нашего демо GitHub Issue Search с помощью 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 , где мы реализовали эти функции в продакшн-среде.

