# 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}]"}