diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java index ae535942..5a0511bb 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java @@ -69,9 +69,26 @@ public class EntitySearchUtils { List positionSequences = text.getSequences(firstEntity.getWord() .trim(), dictionary == null || dictionary.isCaseInsensitiveDictionary(firstEntity.getType()), firstEntity.getTargetSequences()); + Map> multipartSequenceParts = new HashMap<>(); + Iterator 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 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!"); }