2016-02-02 3 views
0

Я разрабатываю веб-приложение, в котором несколько соединений вносят изменения в базу данных и solr 5 с использованием двухфазного фиксации. Мои вопросы: есть ли способ изолировать изменения, сделанные каждым соединением, чтобы изменения, сделанные соединением, не были видны остальным соединениям до тех пор, пока изменения не будут успешно переданы в базу данных и solr?Множественные соединения, обновляющие документы solr

После многочисленных поисков я прочитал этот интересный article, он предполагает, что это невозможно. Кто-то сделал что-то подобное?

Заранее благодарен!

ответ

1

Невозможно. Соли Solr - серверная сторона, чтобы выставить все накопленные документы на сегодняшний день.

Один альтернативный подход, который вы можете использовать, - это индексировать отдельные коллекции, а затем сделать их доступными вместе как один псевдонимы нескольких коллекций. Это, конечно, подразумевает, что ни один документ теоретически не может существовать в двух коллекциях сразу (или вы получите дубликаты).

0

Я столкнулся с той же проблемой. Solr предоставляет 2 способа коммитов.

Hard Commit - Он записывает ваши документы на диск после определенного периода времени.

Soft Commit - В реальном времени фиксируются ваши документы. Хорошо использовать его. Если вы хотите зафиксировать свой документ в режиме реального времени.

Вы можете сконфигурировать вам solrconfig.xml, такие как

Hard Commit - это будет правильно зафиксировать ваши документы на диск в интервале 15 секунд.

<autoCommit> 
    <maxTime>${solr.autoCommit.maxTime:15000}</maxTime> 
    <openSearcher>true</openSearcher> 
</autoCommit> 

Soft Commit - Он будет совершать свои документы в режиме реального времени всякий раз, когда какой-либо фиксации происходит.

<autoSoftCommit> 
    <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime> 
</autoSoftCommit> 
Смежные вопросы