10/10/2018, 11:04
Làm tính năng suggest friends như Facebook
Mình đang cần làm một tính năng mà về cơ bản thuật toán có yêu cầu như tính năng suggestions của Facebook, nên xin đc lấy tính năng này của FB làm ví dụ:
- A là bạn của B, C, D, E, F
- B, C, D là bạn của X
- E, F là bạn của Y
Mình cần tạo 1 danh sách "friend suggestions" cho A, mà trong trường hợp này sẽ bao gồm X và Y. Và X phải đứng trước Y trong danh sách này vì X có 3 người bạn chung với A, trong khi Y chỉ có 2 người bạn chung với A.
Vấn đề là mình phải tạo 1 danh sách suggestions cho bất kỳ người dùng nào đăng nhập vào hệ thống, và vì hệ thống có cả trăm nghìn user, mỗi user lại có thể có hàng chục người bạn (thực ra tính năng mình đang làm ko phải suggest user mà là suggest cái khác nên chỉ có tới hàng chục thôi), nên danh sách phải được tạo một cách hiệu quả. Vậy có bạn nào đã từng làm tính năng tương tự hay biết về vấn đề này mong đc chia sẻ kinh nghiệm.
P/s: mình ko bị giới hạn bởi công nghệ hay database cho hệ thống trên, nên các bạn cứ thoải mái đề xuất công nghệ phù hợp miễn là giải quyết đc vấn đề trên.
if you prefer English then plz answer my question at stackoverflow
- A là bạn của B, C, D, E, F
- B, C, D là bạn của X
- E, F là bạn của Y
Mình cần tạo 1 danh sách "friend suggestions" cho A, mà trong trường hợp này sẽ bao gồm X và Y. Và X phải đứng trước Y trong danh sách này vì X có 3 người bạn chung với A, trong khi Y chỉ có 2 người bạn chung với A.
Vấn đề là mình phải tạo 1 danh sách suggestions cho bất kỳ người dùng nào đăng nhập vào hệ thống, và vì hệ thống có cả trăm nghìn user, mỗi user lại có thể có hàng chục người bạn (thực ra tính năng mình đang làm ko phải suggest user mà là suggest cái khác nên chỉ có tới hàng chục thôi), nên danh sách phải được tạo một cách hiệu quả. Vậy có bạn nào đã từng làm tính năng tương tự hay biết về vấn đề này mong đc chia sẻ kinh nghiệm.
P/s: mình ko bị giới hạn bởi công nghệ hay database cho hệ thống trên, nên các bạn cứ thoải mái đề xuất công nghệ phù hợp miễn là giải quyết đc vấn đề trên.
if you prefer English then plz answer my question at stackoverflow
Bài liên quan
vì giả sử:
B,D, E, F có chung thằng N1
B,D Có chung thằng N2
D,F có chung thằng N3
.....
rất nhiều ....
Đề xuất là:
Lấy danh sách friends của từng thằng đút vào array.
rồi lấy những phần tử chung của các array này
ok.
để thuật toán đạt hiệu suất cao nhất cho cái này là một vấn đề bởi nếu như có cả trăm nghìn user hoặc mỗi user có hàng nghìn friends thì bốc kít. bala...bala
Vấn đề ko phải là làm thế nào tạo được danh sách này, mà là làm thế nào để tạo được danh sách này một cách hiệu quả.
Mình ko mong giải quyết vấn đề này bằng ngôn ngữ lập trình, mà chỉ hi vọng có một mô hình cấu trúc dữ liệu nào có thể giải quyết được vấn đề này.
Nếu bạn ko trả lời được sao còn tốn thời gian type?
1. diễn đàn là nơi để mọi người trao đổi và học hỏi
2. tôi không nói là ông làm thế này thế kia
3. những gì tôi nêu ra là để chúng ta thấy đc những vấn đề khó khăn gặp phải trong tình huống này. nó cũng chẳng phải là vấn đề tôi có thể giải quyết đc hay không?
riêng câu hỏi trên của ông
và câu nói dưới này
lỡ tham gia vào topic của bạn rồi nên có đôi lời vậy
Thử tìm hiểu về trí tuệ nhân tạo data-mining xem. có ích đóa
Thx clue của bạn, thử tìm hiểu về data mining & Structured data analysis nhưng vẫn chưa thấy đc giải pháp liên quan cụ thể nào, hoặc trình độ mình có hạn nên chưa tìm đc cách áp dụng.
Có vẻ đây là một vấn đề khó và ít người gặp phải nên hỏi ở mấy trang web cntt lớn trên thế giới đều chưa có answer.
Quay lại với câu hỏi của bạn:
1/ Bạn quan tâm đến vấn đề giải thuật của bài toán hay là phần scalability, performance của nó?
2/ Kinh nghiệm của bạn trong implement các hệ thống support nosql?
3/ Kiến thức và kinh nghiệm của bạn về các giải thuật AI (trí tuệ nhân tạo)?
4/ Hệ thống user của bạn gồm bao nhiêu người? Trung bình 1 người có bao nhiêu mối quan hệ (ước tính)?
5/ Chiều sâu của các mối quan hệ mà bạn biết được?