Mysql
 sql >> Database >  >> RDS >> Mysql

Come risolvere il dilemma della memorizzazione di nomi umani in MySQL e mantenere sia la discriminabilità che la ricerca di nomi simili?

Ciò che è utile è se puoi scomporre il nome completo in componenti "parole del nome" e memorizzare una codifica fonetica (metafono o una delle tante altre scelte) per ciascuna di esse. Hai solo bisogno della nozione di parole per i nomi, tuttavia, non classificandole specificamente come prime, medie o ultime, il che va bene perché quelle categorie non funzionano comunque bene tra le culture). Ma puoi utilizzare le informazioni sull'ordine posizionale più avanti nella classifica se vuoi che la ricerca di "Paul Carl" corrisponda a "Paul Karl" meglio di "Carl Paul". È necessario essere consapevoli della punteggiatura ambigua che potrebbe richiedere la memorizzazione di più versioni di alcune parole di nome. Ad esempio, Bre-Anna Heim sarebbe suddiviso nelle parole del nome "bre" "anna" "breanna" e "heim". A volte il trattino è irrilevante come Bre-Anna, ma a volte non come in Sally-June". Bre-Anna non usa mai solo Bre o Anna, ma a volte Sally-June può usare solo Sally o solo June. È difficile sapere quale, quindi coprire entrambe le possibilità.

Puoi scrivere la tua query su questo scomponendo e codificando foneticamente in modo simile il nome completo che stai cercando. La tua query può restituire, ad esempio, quei nomi completi che hanno due o più corrispondenze fonetiche dei nomi dei componenti (o uno se è presente un solo nome nella ricerca o nella fonte). Questo ti dà un sottoinsieme di nomi completi da considerare ulteriormente. Potresti inventare una semplice classifica di loro, o anche fare qualcosa come un algoritmo di corrispondenza della distanza su questo sottoinsieme, che sarebbe troppo costoso dal punto di vista computazionale per l'intero milione di nomi. Quando dico corrispondenza della distanza, parlo di algoritmi online come la distanza di Levenshtein e simili.

(modifica) Il motivo è la gestione di casi come il seguente nome:Maria de los Angeles Gomez-Rodriguez. Una persona addetta all'immissione dei dati può semplicemente inserire Maria Gomez. Un'altra potrebbe entrare Maria Gomez Rodriguez. Un altro potrebbe entrare in Maria Angeles Rodrigus.