【发布时间】:2015-09-12 16:04:56
【问题描述】:
我正在尝试减少包含成对值的大型表(数十亿条记录)的维数。每条记录由一个 cookie 和一个 URL 组成,例如
cookie url
000006A0-AC89-4D96-8091-AAA16A7990CB www.cnn.com
000006A0-AC89-4D96-8091-AAA16A7990CB www.bbc.co.uk
000006A0-AC89-4D96-8091-AAA16A7990CB www.ynetnews.com
00001490-7A5C-4944-B556-0BD5DF8A262A www.webmd.com
00001490-7A5C-4944-B556-0BD5DF8A262A www.health.com
00001490-7A5C-4944-B556-0BD5DF8A262A www.juicingforperfecthealth.com
... ...
大多数降维算法都是为处理数值数据而设计的。 R 的daisy 可以计算分类变量的距离,但这肯定无法扩展。
在没有更好的主意的情况下,我将数据加载到 Neo4j 中。我的计划是编写一个 Cypher 查询,它将所有 URL 合并到几个主要组中。 cookie 与 URL 的关系为 visited。
可以返回访问量排名前 n 的 URL:
MATCH (cookie)-[r:visited]->(url)
RETURN (url), count(url)
ORDER BY count(url) DESC
LIMIT 20
现在是棘手的部分:遍历每个 URL 并返回最接近的顶级 URL(即具有最短路径的顶级 URL)。结果如下所示:
url closest_top_level_url
www.juicingforperfecthealth.com www.webmd.com
www.ynetnews.com www.cnn.com
... ...
您能否告诉我如何用 Cypher 编写此代码,或者建议一种更明智的方法来减少大量字符串对列表的维数?
【问题讨论】: