我在可搜索的块中有这一行
text :title, :stored => true
通过太阳黑子solr搜索书名。但我真的必须使用存储字段吗?
:stored => true
根据文件
存储的字段允许检索数据而不会访问底层数据库(通常是SQL服务器)。它们也是突出显示所必需的,更像是这些查询。
存储字段在Solr索引中会有一些性能成本,因此请明智地使用它们。
但我不知道何时应该真正使用这些存储的字段。因为我在可搜索的块中有这么多字段。我应该将所有这些存储起来以避免命中数据库吗?什么是性能成本?
答案 0 :(得分:1)
太阳黑子维护者在这里。
只要您使用Sunspot加载ActiveRecord对象,建议存储字段值仅用于需要它们的Solr功能,例如突出显示。
如果您从太阳黑子搜索响应中渲染hits
,而未加载results
,则您需要存储在视图中呈现的字段值。但由于我提到elsewhere的原因,您应该有明确的理由绕过ActiveRecord。
答案 1 :(得分:0)
如果您希望将字段作为Solr响应返回,通常用于显示目的,您可以将字段标记为已存储
如果您希望字段仅可搜索且不显示,请仅将其编入索引
相反,当你正在执行搜索时,它会更快地从Solr中存储和检索它。
在多个字段上使用Stored的背景将是索引大小会变大,因为Solr必须存储实际值。但是,如果文件数不是那么高,那就不应该打扰你了。