【问题标题】:Solr Sunspot - Reindexing objects is not automatically runningSolr Sunspot - 重新索引对象不会自动运行
【发布时间】:2016-08-05 22:03:44
【问题描述】:

我正在使用 Sunspot Solr 在我们的 Ruby on Rails 应用程序中使用 MangoDB 进行索引和搜索 数据库(Mongo 映射器)

搜索效果很好,但是当我对数据库进行更改时,对象不会自动索引到 Solr。

我尝试手动索引一个类本身:

Top.reindex Sunspot.commit

或者,我添加了 sunspot.yml : auto_commit_after_request:真 我还在 solrconfig.xml 上以一定的时间间隔自动提交:

<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>15000</maxTime>
</autoCommit>

所有这些解决方案都无法自动重新索引我的对象,除非我使用 rake 任务重新索引所有对象:

bundle exec rake sunspot:reindex 

还有其他解决方案吗?

非常感谢。

【问题讨论】:

    标签: ruby-on-rails mongodb solr mongomapper sunspot-rails


    【解决方案1】:
    如果您使用的是ActiveRecord (check this),

    Sunspot 应该默认重新索引。

    这里的问题是您使用的是 Mongo,而不是 AR。为此,我找到了一个集成了 sunspotmongo mapper 的 gem。您可能想check it 看看它是否解决了您的自动索引问题 - gem 应该可以解决它(检查this

    如果这不起作用,您可以尝试对涉及的模型进行一些手动索引,类似于 ActiveRecord 挂钩,例如在用户模型上:

    after_save { |user| Sunspot.index!(user) }
    after_destroy { User.reindex; Sunspot.commit }
    

    【讨论】:

    • 我已经尝试过这个 gem,但它并没有解决我的问题。谢谢:)
    • @user3625835 我已经更新了答案,看看它是否有效。我不知道你是否已经像我告诉你的那样使用钩子尝试过这个 - 如果你这样做了,请告诉我;)
    猜你喜欢
    • 2013-08-06
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多