Web sitesi sonuçlarını popülerliğe göre sıralamak için bir algoritma arıyorum .. Reddit gibi eski bir mesaj o kadar az oy/puan var. reddit tarafından kullanılan Burada Popüler web sitesi yayınları için popülerlik çökmesi algoritması
genel çözüm kabul edilir:t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes
y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 1, otherwise x}
rank = log(z) + (y * t)/45000
Ben reddit algoritması fazla oldu ve onu bir durum için uygun rağmen ne gerçekten ihtiyacım iki algoritmalar Popüler yayınlar için biridir ettik ve Gelecek mesajlar için başka:
- Popüler Yayınlar
- Yaklaşan mesajına
Popülerler, daha yavaş ilerlerken, Gelecek yayınların günümüzde popüler yayınlara daha fazla odaklanacağı, N saat/gün/vb. Sonra keskin bir şekilde düştüğü biraz daha eski yayınlara daha fazla ağırlık kazandıracak.
ben Sfenks ifadeler kullanarak bu yüzden hugly karmaşık algo yazamaz yazıyorum ve sadece aşağıdaki işlevlere erişebilirsiniz:
http://sphinxsearch.com/docs/current.html#numeric-functions
Yani gönderim başına aşağıdaki verilere sahip: saniyede
- Mesaj yaş
- Mesaj
Exponent = 0.01 (Popular), 0.5 (Upcoming)
SecondsSincePublised = abs(CurTimeInSecondsSinceDate-PubTimeInSecondsSinceDate)
Rank = (log10(PostScore)*10000)/pow(SecondsSincePublised,Exponent)
rağmen:
İşte benim şimdiki çözümdür. Son birkaç saat içinde yeni ve popüler bir gönderi genellikle hem popüler hem de yaklaşan sıralarda yer alıyor.
Çürümeyi ayarlamak için bir bileşen bileşenini değiştirebileceğim başka bir algoritma önerebilecek biri var mı?
bu ilginç görünüyor, ben yerel olarak uygulamak ve ben almak sonuçların ne tür görmeye gidiyorum bakın. – antfx