2

我正在尝试在所有索引上搜索关键字。我在我的图形数据库中有。

以下是查询:

start n=node:Users(Name="Hello"), 
m=node:Location(LocationName="Hello")
return n,m

我正在获取节点,并且如果两个索引(用户和位置)中都存在关键字“Hello”,并且如果Hello任何一个索引中都不存在关键字,我不会得到任何结果。

您能否让我知道如何修改此密码查询,以便在任何索引键(名称或位置名称)中存在“Hello”时获得结果。

4

1 回答 1

1

在 2.0 中,您可以使用 UNION 并有两个单独的查询,如下所示:

start n=node:Users(Name="Hello")
return n
UNION
start n=node:Location(LocationName="Hello")
return n;

编写查询的方式的问题在于它计算nand之间对的笛卡尔积的方式m,因此如果找不到n或未m找到,则找不到结果。如果n找到一个,并且找到两个ms,那么您会得到 2 个结果(带有重复n)。类似于 FROM 子句在 SQL 中的工作方式。如果您有一个名为 的空表empty,并且您这样做了,select * from x, empty;那么您将得到 0 个结果,除非您执行某种外部联接。

不幸的是,在 1.9 中做到这一点有些困难。我已经尝试了很多迭代之类的东西WITH collect(n) as n,但无论如何,它在某些时候归结为笛卡尔积的东西。

于 2013-08-12T21:26:28.720 回答