1

我在可搜索块中有这一行

text :title, :stored => true

我正在通过太阳黑子 solr 搜索书名。但是我真的必须使用存储字段吗?

:stored => true

根据文档

存储字段允许在不访问底层数据库(通常是 SQL 服务器)的情况下检索数据。它们也是突出显示和更多类似查询所必需的。

Solr 索引中的存储字段会带来一些性能成本,因此请明智地使用它们。

但我不知道什么时候应该真正使用这些存储的字段。因为我在可搜索块中有很多字段。我应该将它们全部存储起来以避免击中 db 吗?性能成本是多少?

4

2 回答 2

1

太阳黑子的维护者在这里。

只要您使用 Sunspot 加载 ActiveRecord 对象,则建议仅将字段值存储用于需要它们的 Solr 功能,例如突出显示。

如果您hits从 Sunspot 搜索响应进行渲染,而不是加载results,那么您将需要存储您在视图中渲染的字段值。但是由于我在其他地方提到的原因,您可能应该有明确的理由以这种方式绕过 ActiveRecord。

于 2012-12-13T23:18:17.633 回答
0

如果您希望将字段作为 Solr 响应返回,通常出于显示目的,您会将字段标记为已存储。
如果您希望字段仅可搜索而不显示,请仅对它们进行索引。
相反,您回击数据库,在您执行搜索时,它会更快地从 Solr 存储和检索。
在多个字段上使用 Stored 的背景是索引大小会变大,因为 Solr 必须存储实际值。但是,如果文档数量不是那么高,它不应该打扰你。

于 2012-12-12T03:56:45.833 回答