SolrJ: отключить автоматическую фиксацию

#solr #solrj #autocommit

#solr #solrj #автоматическая фиксация

Вопрос:

У нас есть экземпляр Solr, где мы обнаружили, что включение автоматической фиксации в solrconfig.xml на самом деле может хорошо послужить нашим потребностям. Однако есть некоторые случаи и некоторые пакетные операции, в которых мы хотим временно отключить автоматическую фиксацию. Я ничего не смог найти, но мне интересно, знает ли кто-нибудь, можно ли с помощью SolrJ отключить автоматическую фиксацию для определенного процесса, а затем снова включить его?

Комментарии:

1. не могли бы вы, пожалуйста, объяснить, в чем необходимость настройки автоматической фиксации в solrconfig.xml

Ответ №1:

Вы не можете отключить и включить автоматическую фиксацию, поскольку она настроена в solrconfig.xml . Однако вы можете оставить ее отключенной в solrconfig.xml и используйте commitWithin для тех команд добавления, которым требуется автоматическая фиксация.

Комментарии:

1. Привет, по-прежнему ли доступна фиксация в solr 3.6 с использованием solrj? solr.commitWithin(5000); похоже, не существует.

Ответ №2:

отвечаю, потому что это первый результат для «solr отключить автоматическую фиксацию».
Теперь это возможно с помощью нового config API, который позволяет переопределять некоторые свойства, установленные в solrconfig.xml без перезагрузки ядра.
Solrj пока не реализует этот новый API.

Вам не следует отключать автоматические фиксации, смотрите Эту статью.

Если вы хотите выполнить массовую индексацию многих документов одновременно, установите updateHandler.autoCommit.openSearcher=false и отключите автоматическую фиксацию:

 /**
 * Disables the autoSoftCommit feature.
 * Use {@link #reEnableAutoCommit()} to reenable.
 * @throws IOException network error.
 * @throws SolrServerException solr error.
 */
public void disableAutoSoftCommit() throws SolrServerException, IOException
{
   // Solrj does not support the config API yet.
   String command = "{"set-property": {"  
         ""updateHandler.autoSoftCommit.maxDocs": -1,"  
         ""updateHandler.autoSoftCommit.maxTime": -1"  
   "}}";

   GenericSolrRequest rq = new GenericSolrRequest(SolrRequest.METHOD.POST, "/config", null);
   ContentStream content = new ContentStreamBase.StringStream(command);
   rq.setContentStreams(Collections.singleton(content));
   rq.process(solrClient);
}

/**
 * Undo {@link #disableAutoSoftCommit()}.
 * @throws IOException network error.
 * @throws SolrServerException solr error.
 */
public void reenableAutoSoftCommit() throws SolrServerException, IOException
{
   // Solrj does not support the config API yet.
   String command = "{"unset-property": ["  
         ""updateHandler.autoSoftCommit.maxDocs","  
         ""updateHandler.autoSoftCommit.maxTime""  
   "]}";

   GenericSolrRequest rq = new GenericSolrRequest(SolrRequest.METHOD.POST, "/config", null);
   ContentStream content = new ContentStreamBase.StringStream(command);
   rq.setContentStreams(Collections.singleton(content));
   rq.process(solrClient);
}
  

Вы можете увидеть переопределенные свойства на http://localhost:8983/solr/<core>/config/overlay