2012-01-10 45 views
4

重塑思维狮身人面像索引在我的开发配置中需要几个小时,主要是因为几个巨大的表(我们没有使用增量更新)。即使当我改变另一个更小的表的索引时,由于大表的存在,重新索引也需要一个多小时。思考狮身人面像 - 以表格为单位重新塑造

有没有什么办法强制TS重新索引db中指定的表?

回答

10

有没有办法告诉思维狮身人面像一次处理一个索引,但它通过Sphinx的索引器工具直接可能(而不是特别困难)。

indexer --config config/development.sphinx.conf model_core 

有几件事情需要注意:除非你给你的索引定义自定义名称,它会默认为型号名称,downcased并强调,与_Core后缀。如果你有三角洲指数,他们会有一个_delta后缀。另外,如果狮身人面像正在运行,则将--rotate标志添加到该呼叫中。

您可以指定尽可能多的索引。如果你想要一次处理所有的指标(就像思考斯芬克斯的耙子任务),--all会为你做到这一点。

另外 - 我们在谈论多少条记录?你的索引定义有多复杂?几个小时的索引处理并不常见。在Sphinx索引中引用的关联使用的任何外键列上是否有数据库索引?

1

我为此写了一个(相当愚蠢的)BASH函数。请注意,它必须从您的项目的根目录运行。

# "rebuild" one index at a time 
function rebuildts { 
    echo "rake ts:stop" && rake ts:stop 
    echo "rake ts:configure" && rake ts:configure 
    echo "Runnning indexer" 
    indexer --config config/development.sphinx.conf $1 
    echo "rake ts:start" && rake ts:start 
} 

用法:rebuildts my_model_core