# Moteur d'identification CSNS : requêtes implémentées --- ## L'indexation ---- ## Les principales tables retenues * **INDIVIDU** : sexe, date et lieu de naissance; * **INSCRIPTION_RNIPP** : NIR; * **IDENTITE** : nom et prenoms, statut ('o' pour officiel, 'm' pour marital,...); * **tables préfixées par 'GEO_' de la BRPP** permettent pour un code commune donné de récupérer son historique des codes communes ---- ## Les données indexées ---- Toutes les variables nécessaires à l’algorithme d’identification : ```` "_index" : "individus", "_type" : "_doc", "_id" : "WF1QEXwB8FH91ILMXlH4" "_source" : { "nir" : "2001000066001", "prenoms" : "marie jacqueline", "nom" : "louise", "sexe" : "f", "statut" : "m", "anneeNaissance" : "1923", "moisJourNaissance" : "10 20", "codeGeoNaissance" : "01165", "historiqueCodeGeoNaissance" : "01003 01070" } ```` --- ## Les différentes requêtes en place ---- #### Identification exacte Une requête SQL sur les champs : nom, prenoms, dates et commune de naissance ```` SELECT a.id_demande, b.nom, b.prenoms, b.sexe, b.annee_nais, b.mois_jour_nais, b.code_geo_nais, b.histo_code_geo_nais, b.nir, 'EXACT' from &t_demande a inner join &r_individus b on a.nom=b.nom and a.prenoms=b.prenoms and a.annee_naissance=b.annee_nais and b.mois_jour_nais=a.mois_jour_naissance and b.code_geo_nais=a.code_geo_naissance ```` ---- #### Identification exacte avec deserrement de contraintes sur les prénoms : ```` "must": [ { "match": { "nom": { "query": "louise", "operator": "AND", } } }, { "match": { "prenoms": { "query": "marie", "operator": "OR", } } }, { "term": { "anneeNaissance": { "value": "1923", } } }, { "match": { "moisJourNaissance": { "query": "10 20", "operator": "AND", } } }, { "term": { "codeGeoNaissance": { "value": "01165", } } } ] ```` ---- #### Identification exacte avec interversion nom et prénom : ```` "must": [ { "match": { "nom": { "query": "marie", "operator": "OR" } } }, { "match": { "prenoms": { "query": "louise", "operator": "OR" } } }, { "term": { "anneeNaissance": { "value": "1923" } } }, { "match": { "moisJourNaissance": { "query": "10 20", "operator": "AND" } } }, { "term": { "codeGeoNaissance": { "value": "01165" } } } ] ```` ---- #### Identification exacte avec desserrement de contrainte sur au moins un des prénoms et sans date et lieu de naissance : ```` "must": [ { "match": { "nom": { "query": "louise", "operator": "AND" } } }, { "match": { "prenoms": { "query": "marie", "operator": "OR" } } } ], "should": [ { "term": { "anneeNaissance": { "value": "1923" } } }, { "match": { "moisJourNaissance": { "query": "10 20", "operator": "AND" } } }, { "term": { "codeGeoNaissance": { "value": "01125" } } } ] ```` ---- #### Identification floue qui intègre des différences mineures : ```` "must": [ { "match": { "nom": { "query": " louise", "operator": "OR", "fuzziness": "AUTO", "prefix_length": 0, "max_expansions": 50 } } }, { "match": { "prenoms": { "query": "marie", "operator": "OR", "fuzziness": "AUTO", "prefix_length": 0, "max_expansions": 75, "fuzzy_transpositions": true } } }, { "bool": { "should": [ { "term": { "anneeNaissance": { "value": "1923" } } }, { "bool": { "must": [ { "match": { "anneeNaissance": { "query": "1923", "operator": "AND", "fuzziness": "AUTO", "prefix_length": 2, "max_expansions": 50 } } }, { "match": { "moisJourNaissance": { "query": "10 20", "operator": "AND" } } } ] } } ] } } ] ```` ---- #### Identification floue avec interversion nom et prénoms: ```` "must": [ { "match": { "nom": { "query": " marie", "operator": "OR", "fuzziness": "AUTO", "prefix_length": 0, "max_expansions": 50 } } }, { "match": { "prenoms": { "query": "louise", "operator": "OR", "fuzziness": "AUTO", "prefix_length": 0, "max_expansions": 75, "fuzzy_transpositions": true } } }, { "bool": { "should": [ { "term": { "anneeNaissance": { "value": "1923" } } }, { "bool": { "must": [ { "match": { "anneeNaissance": { "query": "1923", "operator": "AND", "fuzziness": "AUTO", "prefix_length": 2, "max_expansions": 50 } } }, { "match": { "moisJourNaissance": { "query": "10 20", "operator": "AND" } } } ] } } ] } } ] } } } ```` --- #### Enregistrement des échos pour analyse : * Sauvegarde des échos dans une table contenant: * id_demande * nom, prenoms, sexe * année, mois et jour de naissance * le code commune de naissance et son historique * le nir correspondant * le score calculé * l'étape au cours de laquelle l'écho a été trouvé --- ### Reste à faire : * Etude de la phonétisation * amélioration des requêtes * gestion des échos multiples : on garde celui ayant le score maximal ? * indicateur de qualité de l'identification
{"metaMigratedAt":"2023-06-16T11:25:06.329Z","metaMigratedFrom":"Content","title":"Moteur d'identification CSNS : requêtes implémentées","breaks":true,"contributors":"[{\"id\":\"fc49955c-c8fd-4a3c-93ed-0e186fa665d5\",\"add\":13035,\"del\":4894}]"}
    181 views