⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.
blog-post

Как мы добавили автодополнение в наше демо поиска по GitHub

author image
View as markdown

Введение

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

В этой статье покажем, как мы реализовали автодополнение на PHP для нашего демо GitHub Issue Search с помощью Manticore Search. Если вы делаете похожую функцию или просто хотите понять, как всё устроено, это руководство познакомит вас с основами.

image

Что понадобится

Базовая реализация

Хотя функция автодополнения требует клиентского 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 , где мы реализовали эти функции в продакшн-среде.

Установить Manticore Search

Установите Manticore Search одной командой в Linux или macOS:

curl https://manticoresearch.com | sh

Для расширенных вариантов установки см. полное руководство по установке и документацию .

Установить Manticore Search