高级查询的搜索短语
正如 搜索短语 中所述,搜索短语允许您保存预定义的图查询。搜索短语在“透视图”(Perspective) 抽屉中定义,并在创建时自动保存。您保存的搜索短语也可以从“透视图”抽屉中访问。
静态搜索短语
在这个使用 Northwind 图的示例中,保存了一个静态搜索短语,其中包含跨越多个节点和关系的 Cypher 查询。第一个标题为 Search phrase 的框指定了用户将部分或全部输入的短语。描述会显示在展示给用户的所有匹配搜索短语下方。
Bloom 将以不区分大小写的方式匹配“搜索短语”字段的任何部分。例如,输入 germ、ORDER 或 SeaFoo 都将显示 Germans ordering Seafood 的匹配项。
动态搜索短语
可以在搜索短语中使用参数,使其成为动态的。在此使用 Northwind 图的示例中,搜索短语中添加了 2 个参数(前面用 $ 符号表示)。这些参数允许通过用户输入来确定应该运行哪个查询。这些参数有三种建议选项可供选择:
-
无建议 (No suggestions) - 如果选中,则在使用搜索短语时不会显示建议列表。
-
标签-键 (Label-key) - 允许为建议列表选择标签:键 (label:key) 对。
-
Cypher 查询 (Cypher query) - 为建议列表编写自定义 Cypher 查询。
参数数据类型
必须为每个参数指定数据类型。Bloom 支持 string(字符串)、integer(整数)、float(浮点数)和 boolean(布尔值)数据类型。此外,Bloom 还支持时间类型 Date、Time、DateTime、LocalDate 和 LocalDateTime。带有时区的时间类型(即 Time 和 DateTime)也可用于基于规则的样式设置或过滤器。您可以搜索它们并获取搜索建议,还可以在检查器 (Inspector) 中编辑它们(前提是您拥有对该图的写入权限)。
参数的用户输入会被转换为为其指定的数据类型。
如果您想为 Cypher 支持的其他数据类型设置参数,可以使用 string、integer、float 和 boolean 输入的组合来构建 Cypher 的其他数据类型。请参阅 Cypher 手册 → 值和类型 以获取有关数据类型的更多信息。
下面描述了几个场景,但您可能还会遇到许多其他场景。
-
时间(日期或时间)类型:当您有时间属性时,可以将
Date、Time、DateTime、LocalDate或LocalDateTimeCypher 函数与字符串参数一起使用。例如:MATCH (n:Employee) where n.startDate = date($inDate) return n其中
$inDate将是一个类似2019-05-23的string输入。 -
空间类型:对于空间属性,可以在搜索短语中将 point 或 distance Cypher 函数与浮点参数一起使用。例如:
MATCH (n:Store) where n.location = point({latitude:$lat, longitude:$long}) return n其中
$lat和$long将是类似37.55和-122.31的float输入。
搜索短语注意事项
-
Bloom 会将可视化处理的记录数限制为 10,000 条,除非查询中设置了更小的限制。这是为了防止应用程序因返回过多记录的查询而挂起或崩溃。
-
建议搜索短语返回路径或一组节点。
仅返回关系可能会导致意外行为,且图可视化不会发生变化。 例如,以下查询:
MATCH ()-[r:CONNECTED_TO]->() RETURN r应重构为:
MATCH p = ()-[r:CONNECTED_TO]->() RETURN p -
此外,请注意,使用搜索短语修改数据是可能的,因为可以使用任何有效的 Cypher 查询。不建议将搜索短语用于此目的,因为最终用户可能不知道运行包含写入 (WRITE) 事务的搜索短语所带来的后果。
-
搜索短语中的 Cypher 查询可以作为读取 (READ) 或写入 (WRITE) 事务发送到数据库(前提是您拥有相应的权限)。为了将其作为写入事务发送,您需要首先在 设置 抽屉中启用此功能。Bloom 可以根据多个关键字检测某些写入查询,如果您的查询不包含任何这些关键字,则需要勾选“写入事务 (Write transaction)”框,以便将该事务作为写入操作发送。如果勾选了“写入事务”框,则该查询始终作为写入事务发送。