Выбор стратегии фиксации solr / lucene - PullRequest
4 голосов
/ 11 октября 2010

У меня есть записи в 120 КБ для индексации в Solr.

Мой вопрос: я должен фиксировать после отправки каждые 10 тыс. записей или только один раз после отправки всех 120 тыс. записей?

Есть ли разница между этими двумя вариантами?

Ответы [ 3 ]

5 голосов
/ 12 октября 2010

Используйте значения автоматической фиксации Solr по умолчанию, что, я считаю, вполне разумно. Если нет, вы можете настроить их в соответствии с вашими потребностями:

<!-- autocommit pending docs if certain criteria are met.  Future versions may expand the available
 criteria -->
<autoCommit>
  <maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered -->
  <maxTime>50000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered -->
</autoCommit>

Это означает, что он будет зафиксирован, когда более 10000 документов ожидают подтверждения или прошло 50 с момента добавления документа.

1 голос
/ 20 апреля 2012

Рекомендуется использовать commitWithin вместо <autoCommit>.

Если вы используете SolrJ, почти все методы имеют параметр commitWithin для использования этой функции.

1 голос
/ 12 октября 2010

Согласно документации Lucene 2.9.3 , commit () позволяет читателям видеть добавленные документы и помещает все добавленные / удаленные документы в индекс на диске.Это дорогостоящая операция.

Так что, если вы хотите видеть часть документов при добавлении других или хотите получить гарантию, что вы не потеряете добавленный набор документов размером более 10 000 документов, вам необходимо зафиксировать каждый10 000 записей.

OTOH, если вы предпочитаете сэкономить дополнительное время для фиксации и не боитесь потерять документы в случае сбоя машины, выполните фиксацию только после добавления всех документов.

...