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