【发布时间】:2022-11-21 00:13:15
【问题描述】:
我正在尝试在 neo4j 中实施欺诈检测系统,其中我有一堆节点,包括个人、银行账户、信用卡、电话号码和地址。
检测银行系统欺诈的一个基本思路是某人拥有一个银行账户和一张信用卡,而他的信用卡与他自己的银行账户没有关联。
我不知道该怎么做。因为当我尝试排除这些节点时:
WHERE NOT (k)-[:VERKNUEPFT]-(b)
我仍然得到错误的节点,但它只是隐藏了 VERKNUEPFT 节点。
有人能给我正确的否定方法,排除每个不需要的节点吗?
首先,我过滤掉了所有需要的节点:
MATCH (p:person)-[r:HAT_KONTO]->(b:bankkonto), (p)-[r2:NUTZT_KARTE]->(k:kreditkarte) return p,b,k,r,r2;
这给了我以下内容:
这个 Hermine 和 Ron 下面的节点是正确的,所以我想排除所有与他们链接的人。
但是当我尝试做MATCH (p:person)-[r:HAT_KONTO]->(b:bankkonto), (p)-[r2:NUTZT_KARTE]->(k:kreditkarte) WHERE NOT (k)-[:VERKNUEPFT]-(b) return p,b,k,r,r2;
只有bankaccount(棕色的)不见了。
当我使用 WHERE 而不是 WHERE NOT 测试相同的代码时:
MATCH (p:person)-[r:HAT_KONTO]->(b:bankkonto), (p)-[r2:NUTZT_KARTE]->(k:kreditkarte) WHERE (k)-[:VERKNUEPFT]-(b) return p,b,k,r,r2;
我实现了与我想要的相反的结果。
【问题讨论】:
标签: neo4j cypher relation negation fraud-prevention