Страница со списком товаров в веб-приложении: использовать запросы к базе данных или поисковую систему? - PullRequest
2 голосов
/ 08 апреля 2011

Я ищу рекомендации по разработке масштабируемого веб-приложения (с использованием направляющих), где продукты перечислены на странице с такими функциями, как поиск в заголовке и описании, выбор категории и сортировка.

Я вижудве опции:

  1. Использовать поисковую систему (Solr, IndexTank) только тогда, когда пользователь выполняет поиск по ключевым словам, для всего остального в базе данных запросов.
  2. Использовать поисковую систему для всего: список по умолчанию (списокбез каких-либо действий пользователя), отображение категорий, упорядочивание и обв.search.

И есть две подопции:

  1. получить идентификаторы из поисковой системы, а затем запросить в БД (или кеш?) данные
  2. хранить в поисковой системе все данные, необходимые для отображения товара, и извлекать все соответствующие данные при поиске

Что вы думаете?Заранее спасибо ..

1 Ответ

0 голосов
/ 09 апреля 2011

(обратите внимание, что мой ответ здесь будет ограничен моим опытом работы с Solr ...)

Для вашего первого набора вопросов: я бы рекомендовал сделать как можно больше поиска через вашу поисковую систему.Solr прекрасно справляется с фильтрацией и огранкой всех категорий.Любая страница, которую вы захотите объединить с поиском на основе ключевых слов, огранкой и т. Д., Вполне может пройти через Solr полностью.

В Solr подстановочный запрос, отсортированный по значению поля isn 'Это, безусловно, самый эффективный вид запроса (он сортирует все совпадающие записи во время запроса, прежде чем отбрасывать все, кроме первой страницы), но он не должен быть слишком ужасным.Следите за этой начальной страницей результатов и, если необходимо, просто подайте что-нибудь более интересное прямо из SQL или кеша, чтобы оставить реальный поиск в Solr.

Помните, что этот конкретный случай не 'На самом деле это страница с результатами поиска, если поиск не был выполнен, это страница с чистого листа.Проектируйте соответственно.

Для последнего набора вопросов оба являются общими и действительными шаблонами, по крайней мере с Solr, и сводятся к реализации клиента.Например, рубиновый клиент Sunspot для Solr будет лениво загружать связанные объекты ActiveRecord при вызове метода results его поискового объекта.Это очень удобно при рендеринге представлений с полноценными объектами ActiveRecord.

Однако Sunspot также предоставляет доступ к необработанным сохраненным значениям, возвращаемым Solr, поэтому вы можете сохранить поездку в базу данных, если у вас мало времени.миллисекунды.

Веселись!

...