Pull request #468: RSS-106: Fixed not working redactions over multi pages

Merge in RED/redaction-service from RSS-106 to master

* commit 'ee5da81299425452171370ab609a0172858c4787':
  RSS-106: Fixed not working redactions over multi pages
This commit is contained in:
Dominique Eiflaender 2022-09-13 08:57:27 +02:00 committed by Philipp Schramm
commit a71a7818c2

View File

@ -69,9 +69,26 @@ public class EntitySearchUtils {
List<EntityPositionSequence> positionSequences = text.getSequences(firstEntity.getWord()
.trim(), dictionary == null || dictionary.isCaseInsensitiveDictionary(firstEntity.getType()), firstEntity.getTargetSequences());
Map<String, List<EntityPositionSequence>> multipartSequenceParts = new HashMap<>();
Iterator<EntityPositionSequence> itty = positionSequences.iterator();
while (itty.hasNext()){
var positionSequence = itty.next();
if(positionSequence.getId().contains("-")){
multipartSequenceParts.computeIfAbsent(positionSequence.getId().split("-")[0], (x) -> new ArrayList<>()).add(positionSequence);
itty.remove();
}
}
for (int i = 0; i <= orderedEntities.size() - 1; i++) {
try {
orderedEntities.get(i).setPositionSequences(List.of(positionSequences.get(i)));
List<EntityPositionSequence> toAdd = new ArrayList<>();
var currentSeq = positionSequences.get(i);
toAdd.add(currentSeq);
if(multipartSequenceParts.containsKey(currentSeq.getId())){
toAdd.addAll(multipartSequenceParts.get(currentSeq.getId()));
}
orderedEntities.get(i).setPositionSequences(toAdd);
} catch (Exception e) {
log.warn("Mismatch between EntityPositionSequence and found Entity!");
}