(обратите внимание, что мой ответ здесь будет ограничен моим опытом работы с Solr ...)
Для вашего первого набора вопросов: я бы рекомендовал сделать как можно больше поиска через вашу поисковую систему.Solr прекрасно справляется с фильтрацией и огранкой всех категорий.Любая страница, которую вы захотите объединить с поиском на основе ключевых слов, огранкой и т. Д., Вполне может пройти через Solr полностью.
В Solr подстановочный запрос, отсортированный по значению поля isn 'Это, безусловно, самый эффективный вид запроса (он сортирует все совпадающие записи во время запроса, прежде чем отбрасывать все, кроме первой страницы), но он не должен быть слишком ужасным.Следите за этой начальной страницей результатов и, если необходимо, просто подайте что-нибудь более интересное прямо из SQL или кеша, чтобы оставить реальный поиск в Solr.
Помните, что этот конкретный случай не 'На самом деле это страница с результатами поиска, если поиск не был выполнен, это страница с чистого листа.Проектируйте соответственно.
Для последнего набора вопросов оба являются общими и действительными шаблонами, по крайней мере с Solr, и сводятся к реализации клиента.Например, рубиновый клиент Sunspot для Solr будет лениво загружать связанные объекты ActiveRecord при вызове метода results
его поискового объекта.Это очень удобно при рендеринге представлений с полноценными объектами ActiveRecord.
Однако Sunspot также предоставляет доступ к необработанным сохраненным значениям, возвращаемым Solr, поэтому вы можете сохранить поездку в базу данных, если у вас мало времени.миллисекунды.
Веселись!