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

Что вам понадобится
- Manticore Search 7.0.0 или новее
- PHP-клиент Manticore Search
- Базовые знания 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
],
],
]);
Поддержка нескольких языков с раскладками клавиатуры
Если ваше приложение обслуживает пользователей на разных языках, поддержка раскладок клавиатуры может иметь большое значение. Вот пример добавления поддержки для раскладок US English, украинской и русской:
$result = $client->autocomplete([
'body' => [
'table' => 'your_table',
'query' => 'user_input',
'options' => [
'fuzziness' => 1,
'layouts' => ['us', 'ru', 'ua']
],
],
]);
Это гарантирует, что пользователи получают точные предложения, независимо от того, какую раскладку клавиатуры они используют.
Как мы это сделали: демонстрация поиска по проблемам GitHub
В нашей демонстрации поиска по проблемам GitHub мы включаем функциональность поиска как по проблемам, так и по комментариям. Мы реализовали одну конечную точку, которая дважды запрашивает Manticore Search и объединяет результаты в единый ответ. Для деталей реализации ознакомьтесь с исходным кодом .
Реализация на фронтенде использует чистый JavaScript с дебаунсированными слушателями событий для эффективной обработки запросов. Просмотрите полную реализацию здесь .
Заключение
Реализация автозаполнения с помощью PHP-клиента Manticore Search является как простой, так и гибкой. Сочетание нечеткого соответствия и поддержки раскладок клавиатуры делает его особенно эффективным для реальных приложений.
Для практического примера изучите нашу демонстрацию поиска по проблемам GitHub , где мы реализовали эти функции в производственной среде.
