狮身人面像重新索引需要几个小时

时间:2010-12-18 22:36:40

标签: ruby-on-rails indexing sphinx thinking-sphinx

我应该怎么做才能加速Sphinx索引(使用MySQL)? 我应该使用其他数据库,noSQL数据库吗?

另请注意,delta索引很快,只有完整的reindeinx进程很慢。 请详细说明。 THX!

更新: 我正在重新索引超过100.000项,我的思维 - 狮身人面像索引定义看起来像这样

define_index do
    indexes [text, user(:nickname), user(:full_name)]
    has rewrites(:id), :as => :rewrite_id
    has rewrites(:user_id), :as => :rewrite_user_id
    has [rewrites(:user_id), user_id], :as => :user_id_or_rewrites_user_id
    has comments(:user_id), :as => :comments_user_id
    has simbols(:id), :as => :simbol_ids
    has followings(:follower_id), :as => :follower_id
    has follows(:followable_id), :as => :followable_id
    has created_at, :sortable => true
    has rewrites_count, :sortable => true
    has relevance, :sortable => true
    has user_id
    set_property :delta => :datetime
  end

3 个答案:

答案 0 :(得分:1)

构建完整索引很慢。有多慢?

建立增量指数很快。

根据我的经验,这听起来很正常。

noSQL数据库(最后我听说@Rails 2.3.5)很难与Rails集成。没有SQL速度取决于您的数据集和关系。

没有更多信息,这听起来很正常。

==编辑==

确保

上有SQL索引
 created_at
 rewrites_count
 relevance

除了你的主键之外自然。

答案 1 :(得分:1)

使用thinking_sphinx时,请始终查看它在真正的sphinx配置文件中生成的SQL。针对将运行的所有查询运行查询分析器。我发现你也可以操作相当多的查询。

对于一对多的关系,您可能需要添加以下内容:

:source => :ranged_query

这将导致sphinx使用单独的查询来收集子项而不是外部联接。在许多情况下它会快得多。

答案 2 :(得分:0)

如何使用实时索引(调整适当的内存限制)