Как реализовать поиск по всем полям всех моделей и связанных сущностей?
лям всех сущностей, включая связанные.
Все было бы хорошо если бы нужно было реализовать поиск по статьям и товарам. Для этого достаточно соединить два запроса и искать в полях title, description и content.
Но на сайте у товаром много связаных сущностей, у которых много своих полей. А клиент хочет, чтобы это всё участвовало в поиске.
так же еще есть страницы, напоминающие лендинг, у которых тоже немало полей, а так же связанных сущностей, например, блоки "Выгоды", "УТП" и т.п.
получается, что нужно реализовать некое подобие поисковой системы.
Нужно, получается, завести таблицу с полями "content", "url" и каждую страницу при изменении сохранять в поле content вместе с её связанными сущностями. и уже по этой таблице вести поиск.
Но это как то слишком сложно. Что можно придумать еще?
Реляционные базы данных не создавались для таких поисков. Они эффективны там где индекс используется.
В твоем-же варианте нужно сделать джойн всего-со-всем и искать по этому всему без индексирования.
Попробуй денормализовать ВСЕ и слить ВСЕ в один сет документов. И эти документы положи в ElasticSearch.
Это - коробочное решение сегодня для любого текстового поиска. Работает быстро. Пропорционально числу
вычислительных nodes. Чем больше nodes в кластере - тем быстрее ищет.
Слава, твой бюджет с твоими потугами будет работать очень плохо: плохо искать, крайне долго на нагрузке и/или большихх данных, что толку от решения будет никакого (и даже вред)
Отдавайте результат через ajax разные сущности в своих разделах. Резделы можно разлелить табами. Например по 10 результатов, затем можно уточнить где продолжить поиск.