【发布时间】:2018-07-04 00:30:04
【问题描述】:
Neo4J 新手,如果我做错了事,请提前道歉。我正在尝试根据他们选择的类别和他们独立喜欢的标签来展示他们可能感兴趣的用户文章。 我在 Neo4j 中的模型是这样的
(:USER)-[:LIKES]->(:TAG)
(:ARTICLE)-[:PUBLISHED_BY]->(:PROVIDER)
(:ARTICLE)-[:HAS_CATEGORY]->(:CATEGORY)
(:USER)-[:DISLIKES]-(:ARTICLE)
(:USER)-[:INTERESTED_IN]->(:CATEGORY)
当我尝试运行以下查询以获得所需的结果时......我得到了它们,但查询需要 16-18 秒才能执行。
MATCH (u:USER {id: $userid})-[:LIKES]->(t:TAG)
WITH u,t, collect(t.name) as tags
UNWIND tags as tag with u,tag
MATCH (c:CATEGORY)<-[*]-(a:ARTICLE)-[pub:PUBLISHED_BY]->(p:PROVIDER)
WHERE a.keywords contains tag OR c.id in $categoryArray
AND NOT (u)-[:DISLIKES]->(a)
RETURN DISTINCT a.id AS id, a.title AS title, pub.pubDate
ORDER BY pub.pubDate DESC LIMIT 250
有没有更快更好的方法来获得想要的结果? 注意:我在 ubuntu 机器上使用 Neo4j 3.4.1 版本,页面缓存:512mb,最小和最大堆大小:1500mb
【问题讨论】: