Chúng tôi đã phát triển một ứng dụng dựa trên web để khớp tên. Nó hoạt động bằng cách chia tên thành các phần và giá trị Soundex của từng phần được lưu trữ trong cơ sở dữ liệu. Các khoảng cách levenshtein số liệu được sử dụng để áp dụng phù hợp với tỷ lệ phần trăm của âm thanh cũng như chính tả chống lại một tên nhất định.
Khi chạy, chúng tôi tải tất cả các bản ghi vào bộ nhớ và áp dụng khoảng cách Levenshtein cho tất cả các giá trị Soundex và chính tả của tất cả các phần của tất cả các tên.
Điều này ban đầu hoạt động tốt vì có tối đa 20 nghìn tên, nhưng bây giờ một trong những khách hàng của chúng tôi có 30 triệu tên. Tải danh sách khổng lồ này vào bộ nhớ cho mỗi yêu cầu và áp dụng loại kết hợp này là một cách tiếp cận thảm hại, sử dụng nhiều bộ nhớ và thời gian thực hiện.
Chúng tôi đang tìm kiếm các đề xuất để tìm kiếm cơ sở dữ liệu từ 30 triệu bản ghi trở lên trong tương lai gần với tỷ lệ phần trăm phù hợp với Âm thanh và Chính tả.
Chức năng cốt lõi
Người dùng cuối nhập tên được khớp và tỷ lệ phần trăm tối thiểu. Chúng tôi phải hiển thị tất cả các tên đó trong cơ sở dữ liệu mà bất kỳ phần nào của tên khớp với bất kỳ phần nào của tên đã cho đến phần trăm đã cho. Tên đầy đủ không bắt buộc phải được khớp, bất kỳ phần nào nếu khớp với tỷ lệ phần trăm là thành công. Ví dụ.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Cả hai phần của cả hai tên không khớp chính xác nhưng đến một mức độ nào đó, chúng ta hãy giả sử 80%, vì vậy nếu người dùng nhập 80% thì tên trong DB phải được hiển thị dưới dạng tên khớp.