Индексирование Solr - верно ли для useColdSearcher справка об ошибке "maxWarmingSearchers Превышен"?

cfindex большого набора документов (35 тыс. документов); Есть ли преимущество для установки useColdSearcher в значение true, чтобы избежать ошибки "maxWarmingSearchers Превышен"? Запуск перестроения индекса из 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. В итоге мне также пришлось регистрировать проиндексированные файлы и перезапускать процесс с последнего добавленного файла (вместе с вычислениями, чтобы достаточно долго спать). Помогает ли временная установка для useColdSearcher значения true в solrconfig.xml, и есть ли какой-нибудь задний ход, чтобы установить этот атрибут в теге cfindex, или мне нужно установить его вручную, а затем вернуть обратно?

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.
  -->

В вашем случае я бы рекомендовал установить для openSearcher значение false, если вы используете autoCommit и настраиваете порождение новых поисковиков, играя с commitWithin при выполнении запроса на обновление.

Другие вопросы по тегам