2011-05-03 66 views
3

所以我一直在使用solr太陽黑子幾天,並對它的問題一直有點瘋狂。我已經搜索了許多不同的網站來尋找答案,但很多人似乎有不同的想法。我正試圖弄清楚太陽黑子是如何在不同的環境中通過自動索引來管理模型的索引/重新索引。這是我的結論:Solr太陽黑子在不同的環境中

開發/生產:保存/更新對象自動更新該對象的索引中的Solr

測試:保存/更新對象不會自動更新索引,你需要調用object.reindex!以使其生效。

控制檯:與測試相同。必須使用Reindex才能正確更新solr。

這樣看起來正確嗎?我的Solr太陽黑子設置有什麼問題,或者它們在這些不同的環境下工作不一樣,這讓我感到很痛苦。任何幫助將不勝感激!

回答

7

在Solr中更新文檔之後,您必須發出一個「提交」來告訴Solr將更改寫入磁盤並讓它們開始出現在搜索結果中。 Sunspot :: Rails會在Rails請求的過程中自動處理,但在此之外(在測試中,從控制檯),您需要明確地執行此操作。這是一個簡單的Sunspot.commit

+0

在許多情況下,您可以將Solr的autoCommit maxTime設置爲30-60秒,然後忘掉它。但是如果你需要自動測試這個更新(就像在你的測試環境中那樣),那麼是的,就像outoftime所說的那樣,發出一個手動提交。 – 2011-05-10 18:36:07

1

有更新的索引方式主要有三種:

  1. object.index:標誌着索引的對象,但可能不會立即索引
  2. object.index !:索引立即對象
  3. Class.reindex:指標均立即

這聽起來像你應該使用的.index的模型對象!方法,而不是在控制檯上的。索引方法。

+0

我upvoted這個答案,因爲我找不到索引的描述!其他地方。你在哪裏找到它? – 2012-03-28 22:10:57