Поиск для людей
В процессе работы над веб-интерфейсом к базе данных по оборудованию столкнулся с проблемой,- как сделать поиск максимально дружелюбным к пользователю? Поскольку вывод результфтов предполагался в табличном виде, первым (и, как оказалось, неправильным) вариантом было сделать поисковые поля в каждом столбце, как умеет, например Excel
Однако, при дальнейшей разработке выяснилось, что такая форма крайне неудобна в работе. При вводе нового значения в форме совершенно непонятно что нужно было делать с другими заполненными полями,- очищать и искать только новое? Искать и предыдущее и новое (and), а может быть искать или предыдущее или новое (or)? В конце-концов решил поти другим путём,- сделал интерфейс, ориентированный на пользователя:
Все логические тупики благополучно закрыты,- поиск изначально ведётся по всем полям, но если вдруг нужно найти вхождения только в конкретном поле,- есть и такая возможность:
Такой интерфейс позволяет людям просто искать, нагрузка ложится в основном на базу данных,- поиск приходится проводить по нескольким таблицам, после чего уже сводить результаты воедино. Пока база небольшая,- достаточно построить индексы на нужных полях. При больших размерах базы,- возможно потребуется построение специализированного индекса или даже денормализация базы. Поживём,- увидим.
Однако, при дальнейшей разработке выяснилось, что такая форма крайне неудобна в работе. При вводе нового значения в форме совершенно непонятно что нужно было делать с другими заполненными полями,- очищать и искать только новое? Искать и предыдущее и новое (and), а может быть искать или предыдущее или новое (or)? В конце-концов решил поти другим путём,- сделал интерфейс, ориентированный на пользователя:
Все логические тупики благополучно закрыты,- поиск изначально ведётся по всем полям, но если вдруг нужно найти вхождения только в конкретном поле,- есть и такая возможность:
Такой интерфейс позволяет людям просто искать, нагрузка ложится в основном на базу данных,- поиск приходится проводить по нескольким таблицам, после чего уже сводить результаты воедино. Пока база небольшая,- достаточно построить индексы на нужных полях. При больших размерах базы,- возможно потребуется построение специализированного индекса или даже денормализация базы. Поживём,- увидим.
Комментарии
Отправить комментарий