0

大規模なドキュメント セット (35,000 ドキュメント) の cfindex; 「maxWarmingSearchers を超えました」というエラーを回避するために、useColdSearcher を true に設定する利点はありますか? CF Admin からインデックスの再構築を実行すると、エラーの説明なしで終了します。ディレクトリ全体のパージと更新を実行するとエラーが発生しました: maxWarmingSearchers を超えました。すべてのファイルを取得して個別に追加するルーチンを作成し、インデックスが大きくなるにつれて Solr が各ドキュメントを終了できるように遅延を動的に増やします

<cfset delay=1000>
<cfdirectory action="list" directory="#dir#files" name="qFiles" >
<cfoutput query="qFiles">
    <cfindex action="update"
    collection="myColl"
    type="file"
    key="#dir#files\#qFiles.name#">
    <cfset sleep(1000+qFiles.currentRow)>
</cfoutput>

これはほとんど機能しましたが、ある時点で再び maxWarmingSearchers エラーが発生しました。また、インデックス付けされたファイルをログに記録し、最後に追加されたファイルからプロセスを再起動する必要がありました (スリープを十分に長くするための計算も必要です)。solrconfig.xml で一時的に useColdSearcher を true に設定することは役立ちますか? cfindex タグでその属性を設定するバックドアの方法はありますか? または、手動で設定してから元に戻す必要がありますか?

4

1 に答える 1

1

おそらく、更新自体のコミット設定を調整するだけでなく、自動コミット設定にももっと注意を払いたいと思うでしょう。キャッシュを「ウォーム」するようにsolr構成で設定を指定していない限り、コールドキャッシュを使用しても何も得られません。

コメントから:

<!-- Use Cold Searcher

     If a search request comes in and there is no current
     registered searcher, then immediately register the still
     warming searcher and use it.  If "false" then all requests
     will block until the first searcher is done warming.
  -->
<useColdSearcher>false</useColdSearcher>

これがあなたを助けるようには聞こえません。maxWarmingSearchers を増やすことはできますが、ほとんどの場合、コミットを行う頻度を変更する必要があります。

また、ソフト コミットのみが常に新しいサーチャーであり、ハード コミットは必ずしもそうではないことに注意してください。自動コミットのコメントから:

<!-- AutoCommit

     Perform a hard commit automatically under certain conditions.
     Instead of enabling autoCommit, consider using "commitWithin"
     when adding documents. 

     http://wiki.apache.org/solr/UpdateXmlMessages

     maxDocs - Maximum number of documents to add since the last
               commit before automatically triggering a new commit.

     maxTime - Maximum amount of time in ms that is allowed to pass
               since a document was added before automatically
               triggering a new commit. 
     openSearcher - if false, the commit causes recent index changes
       to be flushed to stable storage, but does not cause a new
       searcher to be opened to make those changes visible.

     If the updateLog is enabled, then it's highly recommended to
     have some sort of hard autoCommit to limit the log size.
  -->

あなたの場合、autoCommit を使用している場合は openSearcher を false に設定し、更新リクエストを行うときに commitWithin を使用して新しいサーチャーの生成を調整することをお勧めします。

于 2013-09-19T02:34:53.207 に答える