2012-12-11 29 views
1

我在搜索塊這一行sunspot_solr存儲領域

text :title, :stored => true 

上午通過太陽黑子Solr的搜索書名。但是,我真的必須使用存儲的字段嗎?

:stored => true 

按照文檔

存儲字段允許在沒有擊中也基礎數據庫(通常是一個SQL服務器)將被檢索的數據。他們也需要突出顯示和更像這樣的查詢。

存儲字段在Solr索引中有一些性能成本,所以明智地使用它們。

但我不知道什麼時候該真的使用這些存儲的字段。因爲我在可搜索塊中有很多字段。我是否應該將它們全部存儲爲避免碰到db?性能成本是多少?

回答

1

太陽黑子維護者在這裏。

只要您使用太陽黑子加載ActiveRecord對象,則建議僅存儲需要它們的Solr功能(如高亮顯示)才能存儲字段值。

如果您從太陽黑子搜索響應渲染hits,而不是加載results,那麼您將需要存儲您在視圖中渲染的字段值。但由於我提到elsewhere的原因,您應該有這樣一個繞過ActiveRecord的明確理由。

0

如果您希望字段作爲Solr響應,通常用於顯示目的,您將標記字段爲Stored。
如果您希望這些字段只能被搜索並且不能顯示,請讓它們僅被索引。
取而代之,您將數據庫擊回,它會更快地從Solr存儲和檢索,因爲您正在執行搜索。
使用存儲在多個字段的背景將是索引大小將增長,因爲Solr必須存儲實際值。但是,如果文件數量不是很高,它不應該打擾你。

+0

在我的應用程序中搜索書名。因此,我將添加標題作爲字段和available_count作爲存儲字段,因爲我使用可用計數從solr顯示。這是對的嗎? –

+0

您將添加您需要顯示的字段,例如當您執行圖書搜索時,您可以在亞馬遜網站上顯示結果中的標題,作者,available_count,說明等等。 – Jayendra

+0

不可以。我從solr那裏得到書籍清單,並查看書籍模型以獲得標題和說明等。但可用的計數存儲在solr中,因此我將直接使用它。因爲可用計數是使用複雜查詢計算的,並且我在索引中將其存儲在solr中,因此我不必一次又一次運行該複雜查詢。所以它是有意義的存儲:available_count,:stored => true –