3

我在这个网站和其他网站上找到了一堆帖子,这些帖子给了我我需要的东西,但我无法将它们拼凑在一起。

对于搜索,我使用thinking sphinx gem 在我的网站上运行sphinx。每次用户向网站添加新帖子时,我都需要重新索引。我已经在我的网站上运行了delayed_job,所以我想做的是每次添加新帖子时,我想使用delayed_job 异步重新索引。我想我需要使用 handle_asynchronously 命令并在我的模型中调用一个方法,该方法将运行 rake 任务以重新索引..但是我读到的某处说 rake 不应该从代码中运行。

归根结底,完全糊涂了。有人可以建议如何去做吗?

我可以完全离开,但这就是我的想法..

# in post.rb
def reindex_database
  # run rake task  
end

# in posts_controller.rb
def add_post
  # add_post logic
  handle_asynchronously Post.reindex_database
end
4

2 回答 2

1

如果有人关注这个,我最终通过在我的 post.rb 方法中添加一个系统调用来解决这个问题:

# in post.rb
def reindexDB
  `rake thinking_sphinx:rebuild`
end

..然后每当我需要调用它时,我都会使用它:

Post.delay.reindexDB

知道如何正确地解决这个问题仍然会很好。

于 2012-04-04T18:11:48.290 回答
1

你做错了。为此使用增量 - http://freelancing-god.github.com/ts/en/deltas.html

于 2012-04-17T18:02:01.997 回答