我使用sunspot solr在我们的ruby on rails应用程序中使用mangodb进行索引和搜索
数据库(Mongo映射器)
搜索工作良好,但当我对数据库进行更改时,对象不会自动索引到solr。
我尝试手动索引类本身:
Top.reindex Sunspot.commit
或者,我在sunspot.yml上加了一句:
请求后自动提交:真
我还会在solrconfig.xml上自动提交一些间隔:
<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>15000</maxTime>
</autoCommit>
所有这些解决方案都无法自动重新索引我的对象,除非我使用rake任务重新索引所有对象:
bundle exec rake sunspot:reindex
还有其他解决办法吗?
谢谢。
最佳答案
如果您使用ActiveRecord
(check this),默认情况下应该会重新索引太阳黑子。
这里的问题是你使用的是Mongo,而不是AR。我发现了一个集成了太阳黑子和Mongo Mapper的宝石。您可能想check it看看它是否解决了自动索引的问题-gem应该解决它(检查this)
如果这不起作用,您可以尝试在相关模型上执行一些手动索引,类似于activerecord钩子,例如在用户模型上:
after_save { |user| Sunspot.index!(user) }
after_destroy { User.reindex; Sunspot.commit }