Replace diacritic (accented) characters

Background

This article shows how to use a hook script to replace diacritic or accented characters with a normalised version of the character.

Details

The following post process hook script takes a metadata field containing diacritic characters and produces a second normalised field with the accented characters replaced with non-accented versions.

This is useful if you need to strip the characters e.g. on query completion triggers that might need to match the diacritics.

Similar code could be applied in a pre process hook script to typed search queries.

hook_pre_process.groovy
import java.text.Normalizer;
import java.text.Normalizer.Form;

transaction?.response?.resultPacket?.results.each() {

// Created a normalised version of the name metadatafield that removes diacritics
    it.metaData["nameNormalized"] = Normalizer.normalize(it.metaData["name"], Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}