Opracowaliśmy aplikację internetową do dopasowywania nazw. Działa poprzez dzielenie nazw na części, a wartość Soundex każdej części jest przechowywana w bazie danych. Wskaźnik odległości Levenshteina służy do zastosowania procentowego dopasowania dźwięku, a także pisowni w odniesieniu do danego imienia.
W czasie wykonywania ładujemy wszystkie rekordy do pamięci i stosujemy odległość Levenshteina do wszystkich wartości Soundex i pisowni wszystkich części wszystkich nazw.
Na początku działało to dobrze, ponieważ było ich maksymalnie 20 tysięcy, ale teraz jeden z naszych klientów ma 30 milionów nazwisk. Ładowanie tej ogromnej listy do pamięci dla każdego żądania i stosowanie tego rodzaju dopasowywania to żałosne podejście, wymagające dużej ilości pamięci i czasu wykonania.
Szukamy sugestii, aby w najbliższej przyszłości przeszukać bazę danych 30 milionów lub więcej rekordów z procentowym dopasowaniem dźwięku i pisowni.
Podstawowa funkcjonalność
Użytkownik końcowy wprowadza nazwę do dopasowania i minimalny procent. Powinniśmy pokazywać wszystkie te nazwy w bazie danych, dla których dowolna część nazwy pasuje do dowolnej części podanej nazwy, aż do podanego procentu. Pełna nazwa nie musi być dopasowana, każda część, jeśli pasuje do procentu, jest sukcesem. Na przykład.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Obie części obu nazw nie pasują dokładnie, ale do pewnego stopnia, załóżmy, że 80%, więc jeśli użytkownik wprowadzi 80%, nazwa w DB musi być pokazana jako pasująca nazwa.