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

How We Added Autocomplete to Our GitHub Search Demo

Введение

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

В этой статье мы покажем, как мы реализовали автодополнение в нашем демо‑поиске GitHub Issue с помощью 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