2008-08-29 24 views
5

Chúng tôi cần hệ thống "xếp hạng" trong một dự án mà chúng tôi đang thực hiện, tương tự như dự án trong SO. Tuy nhiên, trong của chúng ta có nhiều thực thể cần phải được "gắn thẻ" với một cuộc bỏ phiếu (chỉ lên, không bao giờ xuống, giống như tăng thêm). Đôi khi chúng tôi sẽ cần phải hiển thị tất cả các thực thể theo thứ tự được xếp hạng cao nhất, bất kể loại thực thể nào, về cơ bản trộn các bộ kết quả, tôi đoán vậy. Bạn sử dụng cấu trúc dữ liệu/thuật toán nào để thực hiện điều này để linh hoạt và vẫn có thể mở rộng?Làm cách nào để bạn xây dựng triển khai xếp hạng?

Trả lời

6

Kể từ đá thuật toán xếp hạng reddit, nó làm cho rất nhiều ý nghĩa để có một cái nhìn vào nó, nếu không sao chép nó:


Với thời gian nhập cảnh đã được đăng A và thời điểm 7:46: 43 sáng ngày 8 tháng 12 2005 B chúng tôi có t s như sự khác biệt của họ trong vài giây:

t s = A - B

và x là số chênh lệch giữa số lên phiếu U một d số xuống phiếu D:

x = U - D

đâu

y = 1 if x > 0 
y = 0 if x = 0 
y = -1 if x < 0 

và z là giá trị tối đa của giá trị tuyệt đối của x và 1:

z = |x| if |x| >= 1 
z = 1 if |x| < 1 

chúng tôi có xếp hạng là chức năng ƒ (t s, y, z):

.210

ƒ (t s, y, z) = log z + (y • t s)/45000


Các vấn đề liên quan