Ich teste gerade das feature "named foundsets" in DQL (
https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_dqlnamedresults.html)
Meine application hat ca. 4.5 Mio Dokumente.
Über einen Java Agenten greife ich von einer anderen Anwendung auf die Applikation zu
Der Agent führt folgendes Query aus, und die Anzahl der zu findenden Dokumente is knapp 50.000. Also nicht sonderlich viel.
query = "idNumber > 20 AND idNumber < 30";
Das query funktioniert auch prima, solange die Datenbank keinen FT Index verwendet.
Sobald der Index erstellt ist, und ich das Query ausführe, laufe ich in den bereits erwähnten Fehler. Der Index ist ca 1.9 GB gross.
Ich habe danach eine neue Datenbank angelegt und Daten über ein kleines Script erzeugt. Zunächst ca 20.000 Dokumente. Die Datenbank ist FT enabled, und der Index wurde nach Erstellen der Dokumente aktualisiert.Der FT Index ist erwartungsgemäß klein, bei der kleinen Menge an Dokumenten.
Hier funktioniert auch das query anstandslos.
Danach habe ich über mein Script immer mehr Dokumente in der Datenbank erstellt, und den Index jedes Mal aktualisiert. Keine Fehler bei der Ausführung des query.
Die Datenbank enthält momentan knapp 700.000 Dokumente; die Anzahl gefundener Dokumente liegt bei 10.000.
Ich habe dann das query geändert, um herauszufinden, ob es ggfs. ein Problem mit dem Rückgabewert geben könnte.
Zwar habe ich
dominoQuery.setMaxScanDocs(Integer.MAX_VALUE);
dominoQuery.setMaxScanEntries(Integer.MAX_VALUE);
gesetzt, um die DEFAULT Werte zu überschreiben, und es sollte aus dieser Richtung keine Probleme geben.
Das query gibt problemlos jede beliebige Menge an Treffern zurück. 100k, 200k, 300k. Alles kein Problem.
Von HCL DEV habe ich folgende Information bekommen.
GTR has a hard limit of 32MB of results. We can increase that maybe but more likely will be a consolidation of terms by DQL into a single GTR query. We've already done a bit of that, and yeah, a support ticket would help assure it's done.
The idea of the feature, though is even if you do NOT have a FT index, you can run the query using NSF scanning , taking 20 minutes even, and save its results for 1 msec retrieval subsequently. You do not NEED special views or FT indexes if you have a foundset that is static for a time (even a day, say).
Das eigentliche Problem scheint also das "hard limit of 32MB of results" zu sein. Wobei ich denke, dass man "GTR results" nicht mit der Menge ( und kumulierter Größe ) der gefundenen Dokumente gleich setzen darf.
Ich habe versucht, über ein FT DEBUG mehr herauszufinden, aber das DEBUG liefert ausgerechnet im Fehlerfall gar keine Informationen.
Soweit dies erst einmal. Ich bleibe dran.