У нас есть размещенное приложение, которое управляет страницами контента. Каждая страница может иметь несколько настраиваемых полей и некоторые стандартные поля (временная метка, имя пользователя, электронная почта пользователя и т. Д.).Эффективная фильтрация/поиск
С потенциально сотнями различных сайтов, использующих систему - что является эффективным способом обработки фильтрации/поиска? Сделайте вид сетки, который вы хотите сузить. Вы можете фильтровать по определенным полям (userid, date), или вы можете ввести полнотекстовый поиск.
Например, «все страницы, начатые с userid 10», были бы довольно быстрым запросом к базе данных MySQL. Но такие вещи, как «все страницы, начатые пользователем, чей идентификатор пользователя равен 10 и соответствует [некоторому поисковому запросу]», будут сосать против базы данных, поэтому он подходит для поисковой системы, такой как Lucene.
В принципе, мне интересно, как другие крупные сайты делают такие вещи. Используют ли они поисковую систему на 100% для всех типов фильтрации? Смешивают ли они запросы к базе данных с помощью поисковой системы?
Если мы используем только поисковой системой, возникает проблема с временем задержки, которое требуется для отображения нового/обновленного объекта в индексе поиска. То есть, я читал, что не очень удобно обновлять индекс сразу и делать это партиями вместо этого. Даже если это означает каждые 5 минут, пользователи будут запутаны, когда их недавно добавленная страница не будет немедленно указана, когда они просмотрят простой список страниц (скажем, поисковый запрос категории «5»).
Мы используем MySQL и внимательно изучаем Lucene для поиска. Есть ли другая технология, о которой я не знаю?
Моя мысль состоит в том, чтобы предложить простую страницу фильтрации, которая использует MySQL для фильтрации по основным полям. Затем предложите отдельную страницу полнотекстового поиска, которая представит результаты, похожие на Google. Это единственный способ?