Как добавить поиск в приложение, созданное с помощью ИИ (чтобы люди действительно могли что-то найти)

Чтобы добавить поиск в приложение, созданное с помощью ИИ, начните со строки фильтра, которая сужает список по мере ввода, укажите, по каким полям искать, добавьте фильтры по категориям для просмотра и оставьте ИИ-поиск для опечаток или запросов по смыслу.

У каждого хорошего приложения, созданного с помощью ИИ, наступает момент, когда оно заполняется. Приложение с рецептами, которое было приятным с двенадцатью рецептами, превращается в рутину при трёхстах. Трекер клиентов, который был аккуратным с восемью клиентами, оборачивается бесконечной прокруткой при двухстах. Ничего не сломалось. Приложением стали пользоваться — а это и есть весь смысл, — но теперь то, ради чего люди сюда приходят, а именно найти одну конкретную вещь, занимает слишком много времени.

Это и есть сигнал, что пора добавить в приложение поиск — строку, где ввод нескольких букв сужает длинный список до одного нужного элемента. Не потому что поиск — это впечатляюще, а потому что прокрутка — это не поиск. Разберём, как это сделать без переусложнения, потому что навороченная версия обычно оказывается неверным первым шагом.

Когда пора добавлять поиск в приложение?

Вы это поймёте по тому, что прокрутка начинает занимать больше времени, чем должна: ваш список вырос из аккуратной горстки элементов до сотен, и найти что-то конкретное означает пролистать всё остальное. Ничего не сломалось на пути к этому — приложением просто стали пользоваться, а это и есть весь смысл.

Вот реальный пример этой проблемы. Грумер для собак создала приложение для учёта клиентов — имя, кличка собаки, порода, заметки о том, какие собаки не выносят фен. Первые несколько месяцев это был чистый список, который легко окидывался взглядом. К тому моменту, как у неё набралось двести клиентов, ей приходилось открывать приложение прямо при клиенте и пролистывать сотню имён, чтобы найти «маму Беллы».

Приложение делало ровно то, о чём она просила. Просто список перестал быть удобным способом найти в нём что-то одно. Именно это и чинит поиск: он превращает «прокручивай, пока не заметишь» в «введи пару букв — и вот оно».

Если ваше приложение показывает список чего угодно — заказов, рецептов, клиентов, товаров, заметок — и этот список продолжает расти, вы обязательно с этим столкнётесь. Хорошая новость в том, что первая, самая простая версия поиска решает эту проблему почти для всех.

Как добавить поиск в приложение, созданное с помощью ИИ?

Начните со строки фильтра — текстового поля вверху списка, которое по мере ввода скрывает всё, что не совпадает, — а не с самого умного возможного «ИИ-поиска». Это весь первый шаг, и для большинства приложений он же и единственный нужный.

Когда вы просите ИИ-конструктор добавить поиск, велик соблазн попросить самую умную версию: понимающую смысл, справляющуюся с синонимами, ранжирующую по релевантности. Устоите перед этим соблазном. Умная версия работает медленнее, дороже в эксплуатации, и её сложнее сделать правильно — а вам она почти наверняка пока не нужна.

Введите «белла» — и список сужается до всех Белл. Вот и всё. Это работает мгновенно, практически бесплатно в эксплуатации, и это именно то, что люди на самом деле имеют в виду, когда говорят «хочу уметь искать».

Так и просите у своего конструктора: «Добавь строку поиска над этим списком, которая фильтрует его по совпадению с тем, что я ввожу». Вы удивитесь, как часто это и есть весь проект целиком.

На какие поля действительно должен смотреть поиск?

Только на два-три поля, которые реально идентифицируют искомую вещь, — а не на каждое поле каждого элемента. Сказать об этом своему конструктору — та самая инструкция, которая делает поиск хорошим вместо раздражающего, и большинство людей её пропускают.

По умолчанию конструктор может искать везде — по каждому полю каждого элемента. Звучит основательно, а на деле обычно хуже. Представьте, что вы ищете в том списке клиентов и получаете совпадения из-за того, что слово «маленькая» встретилось в заметке о размере собаки. Теперь вы разбираете результаты, которые технически совпадают, но это совсем не то, что вы имели в виду.

Так что чётко укажите, какие поля важны. Для грумера это имя клиента и кличка собаки — не заметки, не порода, не история записей. Для приложения с рецептами — название рецепта и, может быть, основной ингредиент, но не весь текст инструкции. Скажите своему конструктору: «Поиск должен смотреть только на поля названия и имени». Поиск по правильным двум полям всегда лучше поиска по всем двенадцати.

Что строить сначала — поиск или фильтры?

Часто именно фильтры — потому что многое из того, что люди называют «поиском», на самом деле означает «покажи мне подмножество», а строка поиска для этого не подходит. Вот что удивляет нетехнических создателей приложений.

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

Хорошее правило: добавляйте строку поиска для «я примерно знаю, как это называется» и фильтры для «покажи мне вот такое». Наша грумер в итоге захотела и то, и другое — строку поиска, чтобы быстро найти клиента по имени, когда тот стоит прямо перед ней, и фильтр «просрочено для стрижки», чтобы одним взглядом увидеть, кому написать в тихий день. Одни и те же данные, два совершенно разных способа до них добраться.

Если можете построить сначала только что-то одно, понаблюдайте, как люди на самом деле пользуются приложением. Если они постоянно спрашивают «а где все X», им нужен фильтр, а не строка поиска.

Что должно появляться, когда поиск ничего не находит?

Простое, конкретное сообщение — что-то вроде «Клиенты с ‘zelda’ не найдены — проверьте написание или очистите поиск», — а не пустой экран, который читается как «приложение сломалось». Оно не сломалось; просто нет совпадений, и большинство людей забывают продумать этот случай.

По умолчанию часто получается именно пустой экран. Так что скажите своему конструктору, что должно быть написано в этом пустом состоянии. Это одно предложение — вся разница между тем, что пользователь подумает, будто ваше приложение сломано, и тем, что он подумает, будто сам ошибся при вводе.

Заодно убедитесь, что есть очевидный способ очистить поиск и вернуть весь список обратно. Маленький крестик в поле или ссылка «очистить». Люди застревают внутри поиска, из которого не могут выбраться, чаще, чем можно подумать.

Когда вам нужен ИИ-поиск вместо строки фильтра?

Два конкретных признака, а не ощущение: опечатки и смысл. Если люди ищут «stephanie» и промахиваются мимо «Stefanie», вам нужен щадящий поиск, допускающий близкие совпадения, — попросите конструктора о «поиске, который находит результаты даже при небольшой опечатке». А если вам действительно нужно «найди мне заметки о проблемах с оплатой», а не «найди слово оплата», это уже тот самый умный ИИ-поиск — он стоит дополнительных затрат и сложности, когда решает проблему, которую простая строка решить не может.

Просто не начинайте с этого. Начните со строки, которая фильтрует, добавьте щадящее сопоставление, когда начнут кусать опечатки, и переходите к умной версии только тогда, когда «совпадение по словам» перестанет справляться. Большинству приложений никогда не приходится идти дальше первого шага.

Так что прежде чем что-либо строить, понаблюдайте неделю за собой, пользующимся собственным приложением. То, что вы постоянно прокручиваете, чтобы найти, — клиента, заказ, рецепт, — вот для чего нужна ваша строка поиска. Постройте её сначала именно для этого одного случая, и вы решите проблему почти для всех, кто ей пользуется.