很多年前,我与一些neo4j工程师讨论了查询未知对象的能力,并给出了这个问题。
当时,答案是neo4j中没有通用的db索引。
现在,我有同样的问题需要解决:
我创建的每个节点都有一个唯一的ID(uuid格式为 < nx:u-< uuid> - ?v = n> ,其中ns是namespace,uuid是唯一的uuid,v = n是元素的版本号。
我希望能够运行以下密码查询:
match (n) where n.about = 'ki:u-SSD-v5.0?v=2' return n;
实际上什么也没有返回。
以下查询
match (n:'mm:ontology') where n.about = 'ki:u-SSD-v5.0?v=2' return n;
返回我需要的内容,尽管在查询时我不知道元素类型。
有人可以为此提供帮助吗?
保
答案 0 :(得分:1)
您是否考虑过为about
属性的数据库中的每个节点添加一个achema索引?
例如
将全局标签添加到图中所有尚未拥有它的节点(例如节点)。如果图形过大和/或堆过小,则需要批量执行此操作。以下内容......
MATCH (n)
WHERE NOT n:Node
WITH n
LIMIT 100000
SET n:Node
添加标签后,在新{em>全球标签(例如节点)的about
属性上创建索引。这些步骤也可以互换地进行。
CREATE CONSTRAINT ON (node:Node) assert node.about IS UNIQUE
然后查询类似下面的内容
MATCH (n:Node)
WHERE n.about = 'ki:u-SSD-v5.0?v=2'
RETURN n;
将以高效的方式返回您正在寻找的节点。