Les plug-in de score personnalisés nécessitent un format de données défini.
<THRESHOLDS> <CONFIRMATION_THRESHOLD>string</CONFIRMATION_THRESHOLD> <DENY_THRESHOLD>string</DENY_THRESHOLD> </THRESHOLDS>
Les seuils sont des chaînes à structure libre. Ils sont chargés à partir de la table MATCH_MERGE_ATTR et doivent être conformes au format attendu par le plug-in. Ce format est défini par l'auteur du plug-in et dépend du plug-in.
<ATTRIBUTE> <ATTR_TYPE_ID>unsigned int</ATTR_TYPE_ID> <ATTR_VALUE>string</ATTR_VALUE> <ATTR_LARGE_DATA>string</ATTR_LARGE_DATA> </ATTRIBUTE>
ATTR_LARGE_DATA peut être une chaîne vide en fonction du type d'attribut et du processus ETL. ATTR_LARGE_DATA est optionnel et doit uniquement être utilisé si les données d'un attribut sont trop volumineuses pour rentrer dans la colonne ATTR_VALUE. Ceci doit être déterminé lors de la configuration du système afin que UMF puisse être créé correctement et que les plug-in puissent être écrits pour utiliser les zones correctes.
ATTR_LARGE_DATA peut être codé pour être conforme au jeu de caractères valide de XML. Le codage Base64 est recommandé, ce qui est réalisé dans le processus ETL. Le plug-in peut nécessiter le décodage des données de ATTR_LARGE_DATA. La chaîne doit être également codée en UTF-8. Si la chaîne a été codée en base64 dans ETL, la chaîne UTF-8 sera identique à la chaîne ASCII7.
Voici un exemple de pseudocode d'une fonction de score :
const int score(const char *thresholdStr, const uint thresholdSize, const char *inboundStr, const uint inboundSize, const char *candidateStr, const uint candidateSize, char *result, const uint resultSize) { //créer des chaînes à partir de thresholdStr, inboundStr et candidateStr //créer des documents XML à partir de thresholdStr, inboundStr et candidateStr //faire une analyse syntaxique des seuils à partir du doc XML de seuil en cas d'utilisation de seuils //faire une analyse syntaxique des valeurs à partir du doc XML entrant //faire une analyse syntaxique des valeurs à partir du doc XML candidat //rechercher des erreurs éventuelles, telles que des disparités de types attr, des données incorrectes, etc. //décoder les zones de données attr_value et attr_large_data si nécessaire //appliquer un algorithme de score aux données d'attribut //évaluer le score sur une plage de 0 à 100 //déterminer la concordance ou la discordance (éventuellement à l'aide de seuils) //en cas d'erreur, créer une chaîne d'erreur terminée NULL et //strcpy dans le résultat. Renvoyer -1. //s'il n'y a pas d'erreur, créer un document de résultat terminé NULL et strcpy dans //le résultat. Renvoyer 0. }
La fonction de score doit renvoyer -1 en cas d'erreur.