2010-03-04 23 views
30

Tôi tham gia vào dự án SQL/.NET sẽ tìm kiếm thông qua danh sách tên. Tôi đang tìm một cách để trả lại một số kết quả về những cái tên giống nhau đầu tiên của mọi người. Nếu tìm kiếm "Tom", kết quả sẽ bao gồm Thom, Thomas, v.v. Nó không quan trọng cho dù đây là một tập tin hoặc một dịch vụ web. Ví dụ Thiết kế:Cơ sở dữ liệu của bí danh tên/biệt hiệu chung của mọi người

Table "Names" has Name and NameID 
Table "Nicknames" has Nickname, NicknameID and NameID 

dụ đầu ra:

You searched for "John Smith" 
You show results Jon Smith, Jonathan Smith, Johnny Smith, ... 

Có bất kỳ cơ sở dữ liệu hiện có (công cộng hoặc trả tiền) phù hợp với loại công việc để cư một mối quan hệ giữa biệt danh và tên?

+3

Tại sao lại đóng phiếu? Cơ sở dữ liệu được yêu cầu là một tài nguyên quan trọng cho dự án lập trình này. –

+0

Câu hỏi yêu cầu chúng tôi đề xuất hoặc tìm sách, công cụ, thư viện phần mềm, hướng dẫn hoặc tài nguyên ngoài trang web khác không có chủ đề cho Stack Overflow vì chúng có xu hướng thu hút câu trả lời và spam có ý kiến. Thay vào đó, mô tả vấn đề và những gì đã được thực hiện cho đến nay để giải quyết nó. – C8H10N4O2

Trả lời

9

Tìm kiếm trên google "Cơ sở dữ liệu của biệt hiệu" được bật pdNickName (để thanh toán).

Ngoài ra, tôi nghĩ bạn chỉ cần một bảng duy nhất cho công việc này, không phải hai, với NameID, Name và MasterNameID. Tất cả các biệt hiệu đều đi vào cột Tên. Một tên được coi là "kinh điển". Tất cả các bản ghi biệt hiệu sử dụng cột MasterNameID để trỏ trở lại bản ghi đó, với tên chính tắc chỉ vào chính nó.

Lược đồ hai bảng của bạn không chứa thông tin bổ sung và tùy thuộc vào cách bạn điền vào bảng biệt hiệu, bạn có thể cần thêm mã để xử lý các trường hợp chuẩn.

+0

Cũng nhờ Christopher Richa để tìm sản phẩm này trong chuỗi nhận xét bên dưới. –

-1

Để chọn tương tự như sử dụng cái tên nghe: (xem MSDN)

SELECT SOUNDEX ('Tom') 
+4

Soundex không thực sự có ý nghĩa với tên gọi đầu tiên. Và ngoài ra, (SOUNDEX ("Robert") = 'R163')! = (SOUNDEX ("Bob") = 'B100'), v.v. –

+4

Điểm Doug rất quan trọng ở đây. Soundex hoạt động cho Thom với Tom chứ không phải Robert cho Bob. –

+1

Hoặc Margaret đến Peggy. Tra cứu là cần thiết. – bmb

2

Có một cơ sở dữ liệu trên mạng gọi là pdNicknames (tìm thấy tại http://www.peacockdata2.com/products/pdnickname/). Nó chứa mọi thứ bạn cần, với chi phí 500 đô la.

+0

Bạn sẽ làm thế nào để có được tất cả các mẫu có thể? Lấy ví dụ Robert to Bob, tôi không thể sử dụng "like% ob%" vì nó sẽ khớp với quá nhiều. –

+0

Trong trường hợp đó, bạn sẽ cần một bảng riêng biệt, giữ một ID cho mỗi biệt hiệu để liên kết các tên thật và biệt danh với nhau. –

+0

vâng, đó là câu hỏi của tôi, có một nguồn dữ liệu công khai mà tôi có thể sử dụng để cư trú mối quan hệ giữa tên và biệt danh. –

7

Tôi vừa tìm thấy trang web này.

Dường như bạn có thể viết kịch bản khá dễ dàng.

http://www.behindthename.com/php/extra.php?terms=steve&extra=r&gender=m

Tôi chỉ ước gì có thể tự động thu hẹp này để tiếng anh ..

+0

Thú vị và cung cấp cơ sở dữ liệu cho [cấp phép thương mại] (http://www.behindthename.com/licensing.php) hoặc thông qua [API miễn phí (tỷ lệ giới hạn)] (http: //www.behindthename). com/api /). Trang [chi tiết tên] (http://www.behindthename.com/name/john) phân biệt rõ ràng các biến thể, giới hạn nhỏ, giới tính thay thế và các ngôn ngữ khác; Tôi không biết liệu API có cung cấp cùng mức chi tiết hay không. Họ dường như có phạm vi bảo hiểm quốc tế tốt hơn pdNickname, mặc dù các biến thể có vẻ toàn diện nhất cho tên châu Âu. –

+0

@JohnMellor tài liệu cho API tại liên kết của bạn nói rằng chức năng liệt kê các từ đồng nghĩa cho một tên là "hiện không khả dụng" – C8H10N4O2

29

tôi thêm một nguồn cho bất cứ ai đi qua câu hỏi này thông qua Google. Dự án này cung cấp một tra cứu rất tốt cho mục đích này.

https://github.com/carltonnorthern/nickname-and-diminutive-names-lookup

Đó là hơi đơn giản và ít hoàn chỉnh hơn pdNickName nhưng mặt khác, nó hoàn toàn miễn phí và dễ sử dụng.

+1

Cảm ơn bạn. Đã qua câu hỏi này trên Google 5 năm sau, giống như bạn đã lên kế hoạch. :) – user1003916

+2

Một số mục này khá đáng ngờ. Ví dụ: AARON = ERIN và BILLY = FRED – C8H10N4O2

+0

Gần đây tôi đã sử dụng nguồn này và có thể chứng thực tính hữu dụng của nó.Dựa trên lịch sử cam kết git, tên tệp CSV được cập nhật một cách thường xuyên (và tất nhiên bạn không thể đánh bại giá). – Bill

4

Một cơ sở dữ liệu tên phù hợp thương mại là: http://www.basistech.com/name-indexer/

Nó trông khá chuyên nghiệp (mặc dù có khả năng đắt tiền).

Họ tuyên bố để hỗ trợ các ngôn ngữ sau:
tiếng Ả Rập, Tiếng Trung Quốc (Giản thể), Tiếng Trung Quốc (Phồn thể), tiếng Ba Tư (Farsi/Dari), tiếng Anh, tiếng Nhật, tiếng Hàn, tiếng Pashto, Nga, tiếng Urdu

4

Đây là a github repo with csv of related names, và bạn có thể đóng góp trở lại:

Một vài dòng đầu tiên hiển thị các định dạng:

aaron,ron 
abel,abe 
abednego,bedney 
abijah,ab,bige 
abigail,ab,abbie,abby,gail 
abner,ab,abbie,abby 
abraham,abe,abram,bram 
absalom,ab,abbie,app 
Các vấn đề liên quan