фактор затухания времени для сообщений / обновлений в новостной ленте с использованием neo4j

Я использую neo4j для получения новостей с помощью этого запроса.

MATCH (u:Users {user_id:140}),(p:Posts)-[:CREATED_BY]->(pu:Users)
WHERE  (p)-[:CREATED_BY]->(u) OR  (p:PUBLIC AND (u)-[:FOLLOW]->(pu)) OR
(p:PRIVATE AND (p)-[:SHARED_WITH]->(u))
OPTIONAL MATCH (p)-[:POST_MEDIA]->(f)
OPTIONAL MATCH (p)-[:COMMENT]->(c)<-[:COMMENT]-(u3) RETURN
(p.meta_score+0.2*p.likes+0.1*p.dislikes + 10/(((".time()."-
p.created_time)/3600)+0.1)) as score,
{user_id:pu.user_id,firstname:pu.firstname,lastname:pu.lastname,
profile_photo:pu.profile_photo,username:pu.username} as pu,  p,
collect({user_id:u3.user_id,profile_photo:u3.profile_photo,text:c.text}) as comment,
collect(f) as file ORDER BY score  DESC,
p.post_id DESC LIMIT 25

В этом уравнении для получения оценки сейчас я использую в основном это уравнение p.meta_score+0.1*p.likes-0.05*p.dislikes + 10/(((current_time-
p.created_time)/3600)+0.1)) as score
здесь я добавил 0,1, чтобы предотвратить ошибку бесконечности, так как current_time может быть почти равно записи as p refer post class)
Здесь хорошо для одного дня, но через день time часть не дает хорошего общего балла, так как способ, которым я вычисляю коэффициент затухания времени, непоследователен, мне нужно уравнение, которое последовательно играет свою роль (я имею в виду снижение балла с меньшей скоростью) в течение первых семи дней, а затем начинаю уменьшать свой вклад в балл по более высокой ставке. один способ использовал trigonometry's tan or cot функции, но проблема в том, что через определенные промежутки времени они меняют свои знаки. Я буду благодарен всем, кто дает мне дальнейшие предложения.

1

Решение

На базовом уровне здесь обычно используется экспоненциальная функция затухания времени. Что-то вроде:

score = score / elapsedTime^2

По прошествии времени, прошедшего с момента увеличения должности, значение оценки уменьшается в геометрической прогрессии. Сайты, такие как Reddit и Hacker News используют много более сложные алгоритмы, но это основная идея.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector