sql >> Databasteknik >  >> RDS >> Mysql

Hur löser man dilemmat med att lagra människonamn i MySQL och behålla både särskiljbarhet och en sökning efter liknande namn?

Det som är användbart är om du kan dekomponera det fullständiga namnet till komponent "namnord" och lagra en fonetisk kodning (metafon eller ett av de många andra valen) för vart och ett av dem. Du behöver bara begreppet namnord dock, inte specifikt kategorisera det som första eller mitten eller sist, vilket är bra eftersom dessa kategorier inte fungerar bra i alla kulturer). Men du kan använda positionsordningsinformation senare i rankningen om du vill så att sökning efter "Paul Carl" matchar "Paul Karl" bättre än att matcha "Carl Paul". Du måste vara medveten om tvetydiga skiljetecken som kan kräva lagring av flera versioner av vissa namnord. Till exempel skulle Bre-Anna Heim delas in i namnorden "bre", "anna", "breanna" och "heim". Ibland är strecket irrelevant som Bre-Anna, men ibland inte som i Sally-June. Bre-Anna använder aldrig bara Bre eller Anna, men Sally-June kanske bara använder Sally eller bara June ibland. Det är svårt att veta vilken, så täcker båda möjligheterna.

Du kan skriva din fråga mot detta genom att på liknande sätt dekomponera och fonetiskt koda det fullständiga namnet du söker efter. Din fråga kan returnera, till exempel, de fullständiga namn som har två eller flera fonetiska matchningar av komponentnamn (eller en om det bara finns ett namn i sökningen eller källan). Detta ger dig en undergrupp av fullständiga namn att överväga vidare. Du kan komma med en enkel rangordning av dem, eller till och med göra något som en avståndsmatchningsalgoritm på denna delmängd, vilket skulle vara för dyrt beräkningsmässigt att göra mot hela miljonen namn. När jag säger avståndsmatchning pratar jag om onlinealgoritmer som Levenshtein-avstånd och liknande.

(redigera) Anledningen till detta är att hantera ärenden som följande namn:Maria de los Angeles Gomez-Rodriguez. En person som registrerar data kan bara skriva in Maria Gomez. En annan kan komma in med Maria Gomez Rodriguez. Ännu en annan kan komma in i Maria Angeles Rodrigus.



  1. Radering av rader med främmande nyckelbegränsningar

  2. Hur kan jag meddela mitt program när databasen har uppdaterats?

  3. Hur kan jag generera en serie upprepade nummer i PostgreSQL?

  4. PHP - MySQL åtkomst nekad fel - Fungerar i andra program