Из-за отсутствия примеров в интернете я решил опубликовать то, что я в конечном итоге использовал
<?xml version="1.0" encoding="utf-8"?>
<result>
<dataCollection func="chunked">
<data info="test" info2="test" />
<data info="test" info2="test" />
<data info="test" info2="test" />
<data info="test" info2="test" />
<data info="test" info2="test" />
<data info="test" info2="test" />
<data hasmore="true" nexturl="http://server.domain.com/handler?start=0&end=1000000000&page=1&pagesize=10"
</dataCollection>
</result>
Важно отметить, что я использую, укажите, что есть больше на следующей странице и предоставьтеURL на следующую страницу.Это соответствует документации Solr для DataImportHandlers .Обратите внимание, что в документации указано, что разбитый на страницы фид должен сообщать системе, что у него больше и где взять следующую партию.
<dataConfig>
<dataSource name="b" type="URLDataSource" baseUrl="http://server/" encoding="UTF-8" />
<document>
<entity name="continue"
dataSource="b"
url="handler?start=${dataimport.request.startrecord}&end=${dataimport.request.stoprecord}&pagesize=100000"
stream="true"
processor="XPathEntityProcessor"
forEach="/result/dataCollection/data"
transformer="DateFormatTransformer"
connectionTimeout="120000"
readTimeout="300000"
>
<field column="id" xpath="/result/dataCollection/data/@info" />
<field column="id" xpath="/result/dataCollection/data/@info" />
<field column="$hasMore" xpath="/result/dataCollection/data/@hasmore" />
<field column="$nextUrl" xpath="/result/dataCollection/data/@nexturl" />
</entity>
</document>
Обратите внимание на поля $ hasMore и $ nextUrl.Вы можете разместить с таймаутами.Я также рекомендую разрешить указание размера страницы (это помогает с настройками настройки, чтобы получить оптимальную скорость обработки).Я индексирую @ около 12,5 тыс. Записей в секунду, используя многоядерный (3) экземпляр solr на одном сервере с четырехъядерным процессором Xeon и 32 ГБ оперативной памяти.
Приложение, разбивающее на страницы результаты, использует ту же системукак и сервер SQL, хранящий данные.Я также передаю начальную и конечную позиции, чтобы минимизировать изменения конфигурации, когда мы в конечном итоге загружаем балансировку сервера solr ....