Для пользователей в спящем режиме (с использованием mysql), а также с использованием grails (с помощью плагина с возможностью поиска).
Я продолжал получать ошибки OOM при индексации строк 3M и общего объема данных 5GB.
Эти настройки, похоже, устранили проблему без необходимости писать какие-либо пользовательские индексаторы.
вот несколько вещей, которые стоит попробовать:
Настройки компаса:
'compass.engine.mergeFactor':'500',
'compass.engine.maxBufferedDocs':'1000'
и для спящего режима (не уверен, если это необходимо, но может помочь, например, esp w / mysql, у которого потоковая передача результатов jdbc отключена по умолчанию.
hibernate.jdbc.batch_size = 50
hibernate.jdbc.fetch_size = 30
hibernate.jdbc.use_scrollable_resultset=true
Также, похоже, специально для mysql, пришлось добавить некоторые параметры url в строку подключения jdbc.
url = "jdbc:mysql://127.0.0.1/mydb?defaultFetchSize=500&useCursorFetch=true"
(обновление: с параметрами url память не превышает 500 МБ)
В любом случае, теперь я могу построить свой индекс lucene / comapss с размером кучи менее 2 ГБ. Ранее мне нужно было 8 ГБ, чтобы избежать OOM. Надеюсь, это кому-нибудь поможет.
[1]: http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html mysql streaming jdbc resultset