У меня есть база данных с 20 000 записей. Каждая запись имеет имя. Когда пользователь хочет просмотреть запись, он может посетить webapp и ввести имя записи во входном поле. При наборе текста результаты из базы данных будут показаны/отфильтрованы в соответствии с тем, что пользователь набрал. Я хотел бы знать основные архитектуры/понятия о том, как программировать этотУлучшить результаты поля поиска «поиск»?
Я использую следующий стек языка: во внешнем интерфейсе: html5/JavaScript (+ АЯКС делать мгновенные звонки в то время как пользователь печатает) бэкэнд: Java + JDBC для подключения к простой базе данных SQL
Моя первоначальная идея заключается в том:
- пользователь вводит текст
- Всякий раз, когда персонаж будет введен или удален в InputField, сделать запрос Аякса бэкэндом
- Бэкэнд делает LIKE% вход% запроса на поле имени в базе данных
- Все данные, найденные по запросу высылается в виде JSON строки в веб-интерфейсе
- Фронтэнд обрабатывает строку JSON и отображает то, что приводит его находит
Мои две проблемы: большое количество запросов ajax для обработки в сочетании с очень тяжелыми LIKE-запросами. Каковы способы его оптимизации? Поиск только для двух символов, которые они набирают/удаляют? Только запрос для первых десяти результатов?
Знаете ли вы сайты, использующие эти оптимизации?
ПРИМЕЧАНИЕ. Предположим, что записи - это лица, а имена - как имена реальных людей, поэтому некоторые имена более распространены, чем другие.