Задать вопрос
besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Как реализовать поиск по всем полям всех моделей и связанных сущностей?

лям всех сущностей, включая связанные.

Все было бы хорошо если бы нужно было реализовать поиск по статьям и товарам. Для этого достаточно соединить два запроса и искать в полях title, description и content.

Но на сайте у товаром много связаных сущностей, у которых много своих полей. А клиент хочет, чтобы это всё участвовало в поиске.

так же еще есть страницы, напоминающие лендинг, у которых тоже немало полей, а так же связанных сущностей, например, блоки "Выгоды", "УТП" и т.п.

получается, что нужно реализовать некое подобие поисковой системы.

Нужно, получается, завести таблицу с полями "content", "url" и каждую страницу при изменении сохранять в поле content вместе с её связанными сущностями. и уже по этой таблице вести поиск.

Но это как то слишком сложно. Что можно придумать еще?
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
JhaoDa
@JhaoDa
LaravelRUS Team
Нужно использовать поисковые движки — ElasticSearch, Manticore, Sphinx и т.д. Ну или FTS в MySQL и Постгрес, но это от бедности.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Реляционные базы данных не создавались для таких поисков. Они эффективны там где индекс используется.
В твоем-же варианте нужно сделать джойн всего-со-всем и искать по этому всему без индексирования.

Попробуй денормализовать ВСЕ и слить ВСЕ в один сет документов. И эти документы положи в ElasticSearch.
Это - коробочное решение сегодня для любого текстового поиска. Работает быстро. Пропорционально числу
вычислительных nodes. Чем больше nodes в кластере - тем быстрее ищет.
Ответ написан
Sanes
@Sanes
Отдавайте результат через ajax разные сущности в своих разделах. Резделы можно разлелить табами. Например по 10 результатов, затем можно уточнить где продолжить поиск.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы