сохраненные поля sunspot_solr

У меня есть эта строка в доступном для поиска блоке

text :title, :stored => true

Ищу название книги через sunspot solr. Но действительно ли мне нужно использовать сохраненное поле?

:stored => true

согласно документации

Сохраненные поля позволяют извлекать данные без обращения к базовой базе данных (обычно SQL-серверу). Они также необходимы для выделения и других подобных запросов.

Сохраненные поля в индексе Solr снижают производительность, поэтому используйте их с умом.

Но я не знаю, когда мне действительно следует использовать эти сохраненные поля. Потому что у меня так много полей в доступном для поиска блоке. Должен ли я сделать их все сохраненными, чтобы избежать попадания в БД? и какова будет стоимость исполнения?


person Ghost Rider    schedule 11.12.2012    source источник


Ответы (2)


Хранитель солнечных пятен здесь.

Пока вы используете Sunspot для загрузки объектов ActiveRecord, сохранение значений полей рекомендуется только для использования с функциями Solr, которые требуют их, например выделение.

Если вы визуализируете hits из ответа поиска Sunspot и не загружаете results, вам нужно сохранить значения полей, которые вы визуализируете, в своих представлениях. Но по причинам, которые я упомянул в другом месте, у вас, вероятно, должна быть четкая причина для обхода ActiveRecord таким образом.

person Nick Zadrozny    schedule 13.12.2012

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

person Jayendra    schedule 12.12.2012
comment
В моем приложении я ищу название книги. Поэтому я добавлю заголовок как просто поле, а available_count как сохраненное поле, так как я использую доступное количество для отображения из solr. это правильно? - person Ghost Rider; 12.12.2012
comment
вы бы добавили поля, которые вам нужно будет отображать, например. Когда вы выполняете поиск книги, вы будете отображать название, авторов, available_count, описание и некоторые другие результаты, как на сайте Amazon. - person Jayendra; 12.12.2012
comment
Нет. Я получаю список книг из solr и просматриваю модель книги, чтобы получить название, описание и т. д. Но доступное количество книг хранится в solr, поэтому я буду использовать его напрямую. Поскольку доступное количество вычисляется с помощью сложного запроса, я сохранил его в solr во время индексации, чтобы мне не приходилось снова и снова запускать этот сложный запрос. Так что имеет смысл хранить :available_count , :stored =› true - person Ghost Rider; 12.12.2012
comment
да, это имело бы смысл. Вы также можете сохранить другие поля, чтобы предотвратить дальнейшие вызовы БД, если хотите. - person Jayendra; 12.12.2012