2016-07-11 3 views
0

Я хотел бы использовать Hibernate Search в своей заявке; приложение содержит несколько модулей, доступ к индексу поиска:Совместное использование спящего режима Поиск индекса

  • один модуль автор/читатель
  • два или три только для чтения модулей

(модули будут находиться на одной и той же физической машине)

Можно ли это сделать? Достаточно ли, если один и тот же каталог индексов разделяется между модулями? Существуют ли какие-либо штрафы за производительность?

ответ

0

Да. Есть только штрафы за производительность, когда вам нужно несколько приложений на одном компьютере до написать.

Поскольку в вашем случае записывается только одно приложение, вы можете получить хорошую производительность, разрешив этому приложению использовать «эксклюзивный режим», а другие приложения - только для чтения.

Эксклюзивный режим по умолчанию с версии 5.0, поэтому для приложения-писателя/считывателя не требуется никаких изменений конфигурации.

Другие приложения должны быть сконфигурированы так, чтобы не открывать IndexWriter при загрузке, чтобы они могли получить блокировку индексации.

Просто установите это свойство:

hibernate.search.default.exclusive_index_use = false 

Одно ограничение: вы не можете использовать практически в режиме реального времени IndexManager, описанный в section 3.2.2, как пишет не будут сброшены на диск на каждой операции записи, так другие приложения не будут видеть последние изменения.

+0

Спасибо! Приблизительно, насколько велика эта задержка? Секунды? Минуты? – krisy

+0

При использовании NRT задержка не контролируется временем, а заполняется буферами. Так что это не очень практично, поэтому я предложил не включать NRT. Даже настройки по умолчанию (не-NRT) дают довольно хорошую производительность. – Sanne

Смежные вопросы