Что полезно, если вы можете разложить полное имя на компонент «именные слова» и сохранить фонетическую кодировку (метафон или один из множества других вариантов) для каждого из них. Вам просто нужно понятие именных слов, а не конкретизировать его как первое или среднее или последнее, что хорошо, потому что эти категории в любом случае плохо работают в разных культурах). Но вы можете использовать информацию о позиционном порядке позже в ранжировании, если хотите, чтобы поиск "Paul Carl" соответствовал "Paul Karl" лучше, чем "Carl Paul". Вы должны знать о неоднозначной пунктуации, которая может потребовать хранения нескольких версий некоторых именных слов. Например, Бре-Анна Хейм была бы разбита на имена «бре», «анна», «бреанна» и «хейм». Иногда черта не имеет значения, как Бре-Анна, но иногда не так, как в Салли-июне ". Бре-Анна никогда не использует только Бре или Анну, но Салли-Джун иногда может просто использовать Салли или только июнь. Трудно понять, какой, так что покрыть обе возможности.
Вы можете написать свой запрос против этого, аналогичным образом разложив и фонетически кодировав полное имя, которое вы ищете. Ваш запрос может вернуть, скажем, те полные имена, которые имеют два или более фонетических совпадения имен компонентов (или одно, если в поиске или источнике есть только одно имя). Это дает вам подмножество полных имен для дальнейшего рассмотрения. Вы могли бы придумать их простое ранжирование или даже сделать что-то вроде алгоритма сопоставления расстояний в этом подмножестве, что было бы слишком дорого в вычислительном отношении для всего миллиона имен. Когда я говорю о согласовании расстояний, я говорю о таких онлайн-алгоритмах, как расстояние Левенштейна и т. П.
(правка) Это объясняется тем, что я обращаюсь со следующими именами: Мария де Лос-Анджелес Гомес-Родригес. Один человек для ввода данных может просто ввести Марию Гомес. Другой может войти в Марию Гомес Родригес. Еще один мог бы войти в Марию Анджелес Родригус.