私のサイトの検索cronは、どれほど頻繁に実行しても、約2〜3分かかります。前回の実行以降に追加された新しいノードのみがインデックスに追加されるという印象を受けました。どうやらそれは異なって働いていますか?
SOLR検索インデックスの更新はより速くなりますか?
Cron実行ごとにインデックスを作成するノードの数を確認します。数が多い場合は、処理に時間がかかります。
一方、インデックスを作成するノードがない場合、検索cronはそれほど長くはかかりません。インデックス化されていないノードの数は、検索設定(admin/config/search/settings)でいつでも確認できます。番号が0で、検索cronにそれでも時間がかかる場合は、いくつかの問題があるか、何か他の問題が原因である可能性があります。
Elysia cron を見て、いつ、どのくらいの頻度で、何が実行されるかを微調整します。
そして、あなたの最後の質問について-私が覚えている限り、SOLRはそれをバックグラウンドで実行しているので-はい、検索インデックスの更新はより速くなります。
[編集]
これについて考えてみましょう。フィールドの数(すべてのノードでnode_loadを呼び出すため)と本体フィールドの長さに関係している可能性があります。
私が遭遇した1つの癖は、node_load
とnode_view
の間に発生するすべてがインデックス作成中に発生することです。プロセスを確認するには、 _node_index_node
逆方向にトレースを開始してください。
つまり、ページが表示されたときに発生する負荷の高い操作は、ページにインデックスが作成されたときにも発生します。
たとえば、しばらく前にnode_load
の間に外部Webサービスをクエリしたサイトがあり、検索のインデックス作成がslowであることに気付きました。私のインスタンスでは、外部のWebサービス呼び出しは追加されていて、インデックス作成中には必要ありませんでした。私は何かをすることでそれを解決しました
function foo_node_load ($nodes, $types)
{
if (arg(0) != "node") return;
// rest of hook
}
だから、私はあなたのフックで何が起こっているのか、そしてプロセスを遅くしている可能性のあるプリプロセス/プロセス関数を見てみましょう。