In der ursprünglichen (Java-)Version von Lucene gibt es keine feste Beschränkung für die Größe der Datei TopFieldDocCollector
Ergebnisse. Jede Zahl größer als Null wird akzeptiert. Obwohl Speicherbeschränkungen und Leistungseinbußen zu einer praktischen Grenze führen, die von Ihrer Umgebung abhängt, sind 5000 Treffer trivial und sollten außerhalb eines mobilen Geräts kein Problem darstellen.
Vielleicht bei der Portierung von Lucene, TopFieldDocCollector
wurde geändert, um etwas anderes als die "Heap"-Implementierung von Lucene zu verwenden (genannt PriorityQueue
, erweitert um FieldSortedHitQueue
)-etwas, das die Größe der Ergebnisse unangemessen klein macht. Wenn dies der Fall ist, sollten Sie sich den Quellcode für TopFieldDocCollector
und implementieren Sie Ihren eigenen ähnlichen Hit-Collector unter Verwendung einer besseren Heap-Implementierung.
Ich muss jedoch fragen, warum Sie versuchen, 5000 Ergebnisse zu sammeln? Kein Benutzer in einer interaktiven Anwendung wird so viele Ergebnisse sehen wollen. Ich gehe davon aus, dass Benutzer, die sich 200 Ergebnisse ansehen wollen, selten sind, aber verdoppeln Sie die Zahl auf 400, nur als Sicherheitsfaktor. Je nach Anwendung kann eine Begrenzung der Ergebnisgröße böswillige Screen Scraper behindern und auch Denial-of-Service-Angriffe abschwächen.