Поле должно иметь устойчивый смысл
Для каждого признака важно определить тип значения и правила заполнения. Дата, число, выбор из списка и свободный текст требуют разного сравнения. Если в поле город одновременно записаны полное название, сокращение и несколько вариантов написания, простой фильтр может разделить одинаковые сущности. Полезно заранее согласовать словарь допустимых значений. Отсутствующее значение также не всегда означает ноль или отрицательный ответ. Нужно различать неизвестно, не применимо и действительно пустое поле. Эти решения относятся к модели данных, поэтому их трудно исправить только изменением внешнего вида формы.
Пользователь должен понимать сочетание условий
Два выбранных признака могут означать одновременное выполнение обоих или соответствие любому из них. Это разные логические операции. Например, публикации определённой категории за выбранный год обычно требуют пересечения условий, а несколько равноправных значений одного признака могут объединяться. Точное поведение нужно определить явно и проверить на примерах. Если результат пустой, полезно показать действующие ограничения и способ снять одно из них. Иначе человек может решить, что нужного материала нет вообще. Число найденных записей и видимые выбранные значения помогают сохранить понимание состояния поиска.
Техническая проверка идёт вместе с содержательной
Входные значения необходимо проверять и безопасно передавать в запросы к данным. В разработке для этого используют подходящие механизмы параметризации, а не склеивают пользовательский ввод с командами. Но безопасность не заменяет проверку смысла. Даже корректный запрос способен сравнивать даты как текст или исключать записи из-за неправильного пустого значения. Для испытания полезен небольшой известный набор публикаций, где результат каждого условия можно определить вручную. Сложные фильтры также влияют на скорость, поэтому производительность оценивают на подходящем объёме в разрешённой среде, не экспериментируя вслепую на рабочем сайте.
Попробуйте на практике
Спроектируйте фильтр маленького каталога новостей на бумаге.
- Придумайте шесть публикаций с категорией, годом и одним дополнительным признаком. Для одной записи оставьте значение неизвестным.
- Опишите правила каждого поля и приведите разные написания, которые нужно было бы нормализовать перед поиском.
- Задайте два сочетания условий: пересечение признаков и выбор любого из двух значений. Вручную перечислите ожидаемые записи.
- Нарисуйте пустую выдачу с видимыми фильтрами и понятным способом убрать ограничение. Запишите технические вопросы для дальнейшей проверки.
Как проверить результат. Ожидаемый результат можно объяснить без догадок, неизвестные значения обработаны намеренно, а пользователь видит причину ограничения выдачи.
Частые вопросы
Можно ли исправить плохие данные новым модулем поиска?
Не полностью. Инструмент зависит от структуры и качества значений. Сначала нужно понять, какие несогласованности существуют и как их исправлять.
Почему свободный текст неудобен для некоторых фильтров?
Разные написания затрудняют точное сопоставление. Для устойчивых категорий часто полезнее заранее определённые значения, если это соответствует задаче каталога.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.