В исходной (Java) версии Lucene жестких ограничений на размер результатов TopFieldDocCollector
нет. Любое число больше нуля принимается. Хотя ограничения памяти и снижение производительности создают практический предел, который зависит от вашей среды, 5000 обращений - это тривиально и не должно создавать проблем за пределами мобильного устройства.
Возможно, при переносе Lucene TopFieldDocCollector
был изменен для использования чего-то другого, кроме реализации "кучи" Lucene (называемой PriorityQueue
, расширенной на FieldSortedHitQueue
) - что-то, что накладывает неоправданно небольшое ограничение на размер результатов. Если это так, вы можете захотеть взглянуть на исходный код TopFieldDocCollector
и реализовать свой собственный подобный сборщик посещений, используя лучшую реализацию кучи.
Я должен спросить, однако, почему вы пытаетесь собрать 5000 результатов? Ни один пользователь в интерактивном приложении не захочет увидеть столько. Я полагаю, что пользователи, желающие посмотреть на 200 результатов, редки, но удваивают их до 400, как фактор безопасности. В зависимости от приложения ограничение размера результата может препятствовать вредоносным скреперам экрана и уменьшать атаки типа «отказ в обслуживании».