besogonskiy
@besogonskiy
работаю php laravel разработчиком.

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы