Я использую 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
здесь я HACE добавляемые 0.1, чтобы предотвратить ошибку бесконечности, как current_time может быть почти равным размещать created_time (as p refer post class
) Здесь его хорошо для одного дня но через день часть time
не вносит вклад в общий балл, так как способ вычисления коэффициента времени не согласуется. Мне нужно уравнение, которое играет свою роль последовательно (я имею в виду уменьшение балла по меньшей мере) за первые семь дней и начинают уменьшать свой вклад в счет по более высокой ставке. один способ использовал функции trigonometry's tan or cot
, но проблема в том, что через несколько интервалов они меняются там. Я должен быть благодарен всем, что дает мне дополнительные предложения.
делает Neo4j высчитывать поддерживает показатель –
да: http://neo4j.com/docs/stable/query-operators.html –
да я тоже получил, что после короткого поиска –