blog-post

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

Введение

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

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

В нашем демо-сайте поиска проблем GitHub мы включаем функциональность поиска как по проблемам, так и по комментариям. Мы реализовали одну конечную точку, которая запрашивает Manticore Search дважды и объединяет результаты в единый ответ. Для деталей реализации ознакомьтесь с исходным кодом .

Фронтенд реализация использует чистый JavaScript с затенёнными слушателями событий для эффективной обработки запросов. Полную реализацию смотрите здесь .

Заключение

Реализация автозаполнения с помощью PHP клиента Manticore Search проста и гибка. Сочетание нечёткого совпадения и поддержки раскладок клавиатуры делает его особенно эффективным для реальных приложений.

Для практического примера исследуйте наш демонстрационный поиск проблем GitHub , где мы реализовали эти функции в производственной среде.

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

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