Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да разрешим дилемата за съхраняване на човешки имена в MySQL и да запазим както разграничаването, така и търсенето на подобни имена?

Полезно е, ако можете да разложите пълното име на компонентни „думи за име“ и да съхраните фонетично кодиране (метафон или един от многото други възможности за избор) за всяка от тях. Просто се нуждаете от представата за думите за име, а не конкретно да ги категоризирате като първа, средна или последна, което е добре, защото тези категории така или иначе не работят добре в различните култури). Но можете да използвате информация за позиционния ред по-късно в класирането, ако желаете, така че търсенето на „Пол Карл“ да съответства по-добре на „Пол Карл“, отколкото на „Карл Пол“. Трябва да сте наясно с двусмислената пунктуация, която може да наложи съхраняването на няколко версии на някои думи с имена. Например Bre-Anna Heim ще бъде разделена на думите на името "bre" "anna" "breanna" и "heim". Понякога тирето е без значение като Bre-Anna, но понякога не като в Sally-June". Bre-Anna никога не използва само Bre или Anna, но Sally-June може просто да използва Sally или само June понякога. Трудно е да се разбере кое, така че покриват и двете възможности.

Можете да напишете вашата заявка срещу това, като по подобен начин разложите и фонетично кодирате пълното име, което търсите. Вашата заявка може да върне, да речем, тези пълни имена, които имат две или повече фонетични съвпадения на имена на компоненти (или едно, ако има само едно име в търсенето или източника). Това ви дава подмножество от пълни имена, които да разгледате допълнително. Можете да измислите просто класиране на тях или дори да направите нещо като алгоритъм за съпоставяне на разстояние върху това подмножество, което би било твърде скъпо от изчислителна гледна точка, за да се направи срещу целия милион имена. Когато казвам съпоставяне на разстояние, говоря за онлайн алгоритми като разстоянието на Левенщайн и други подобни.

(редактиране) Причината за това е обработката на случаи като следното име:Мария де лос Анджелис Гомес-Родригес. Едно лице за въвеждане на данни може просто да въведе Maria Gomez. Друг може да влезе в Мария Гомес Родригес. Още един може да влезе в Maria Angeles Rodrigus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извикване на функция-член execute() на булев вход

  2. MySQL/PHP – Поставянето на кавички около числата би ли нарушило някакви заявки?

  3. поръчка по не работи правилно с две полета

  4. Как да проектираме филмова база данни?

  5. Как да получите актуализации за известия на живо от mysql с помощта на websockets?