[Fix] Different strategy to stop generating filter facets

This commit is contained in:
Robert von Burg 2021-06-14 16:09:22 +02:00
parent 6061bd4088
commit b3ff1b1726
1 changed files with 9 additions and 4 deletions

View File

@ -492,21 +492,26 @@ public class GenericReport extends ReportPolicy {
}) // }) //
.sorted(comparing(StringParameter::getIndex)) // .sorted(comparing(StringParameter::getIndex)) //
.map(StringParameter::getUom).collect(toList()); .map(StringParameter::getUom).collect(toList());
// make sure all types are in the result, even if just empty
criteria.forEach(s -> result.addSet(s, Collections.emptySet()));
int count = 0;
while (iter.hasNext()) { while (iter.hasNext()) {
Map<String, StrolchRootElement> row = iter.next(); Map<String, StrolchRootElement> row = iter.next();
boolean changed = false;
for (String criterion : criteria) { for (String criterion : criteria) {
if (row.containsKey(criterion)) { if (row.containsKey(criterion)) {
if (result.size(criterion) >= limit) if (result.size(criterion) >= 10)
continue; continue;
result.addElement(criterion, row.get(criterion)); result.addElement(criterion, row.get(criterion));
changed = true;
} }
} }
if (!changed) // stop if we have enough data, or iterated over "enough"
count++;
if (count > 10 * result.keySet().size() || result.size() > 1000)
break; break;
} }