Введение
Вы когда-нибудь замечали, как поисковые системы, такие как 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
],
],
]);
Поддержка нескольких языков с раскладками клавиатуры
Если ваше приложение обслуживает пользователей на разных языках, поддержка раскладок клавиатуры может иметь большое значение. Вот пример добавления поддержки для раскладок английского (США), украинского и русского:
$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 , где мы реализовали эти функции в производственной среде.