高级查询搜索短语
如搜索短语中所述,搜索短语允许您保存预定义的图查询。搜索短语在“透视”抽屉中定义,并在创建时自动保存。您保存的搜索短语也可以从“透视”抽屉中访问。
静态搜索短语

在此使用 Northwind 图的示例中,已保存了一个静态搜索短语,其中包含一个跨越多个节点和关系的 Cypher 查询。第一个标题为“搜索短语”的框指定了用户将部分或全部键入的短语。描述显示在显示给用户的所有搜索短语匹配项下方。
Bloom 将以不区分大小写的方式匹配搜索短语字段的任何部分。例如,键入“germ”或“ORDER”或“SeaFoo”都将显示与“Germans ordering Seafood”的匹配项。
动态搜索短语

可以在搜索短语中使用参数使其动态化。在此使用 Northwind 图的示例中,搜索短语中添加了 2 个参数(前面带有“$”符号)。这些允许进一步的用户输入来确定应运行哪个查询。有三个选项可用于这些参数的建议
-
无建议 - 如果选中,则使用搜索短语时不会显示建议列表。
-
标签-键 - 允许为建议列表选择标签:键对。
-
Cypher 查询 - 为建议列表自定义编写的 Cypher 查询。
参数数据类型
必须指定每个参数的数据类型。Bloom 支持string
、integer
、float
和boolean
数据类型。此外,Bloom 还支持时间类型Date
、Time
、DateTime
、LocalDate
和LocalDateTime
。带有时区的时间类型,即Time
和DateTime
,也可以用于基于规则的样式或过滤器。您可以搜索它们并获取搜索建议,也可以在检查器中编辑它们(前提是您对图具有写入访问权限)。
参数的用户输入将转换为为其指定的数据类型。
如果要为 Cypher 中支持的其他数据类型设置参数,则可以使用string
、integer
、float
和boolean
输入的组合来构建 Cypher 的其他数据类型。有关数据类型的更多信息,请参阅Cypher 手册 → 值和类型。
下面描述了一些场景,但您可能会遇到许多其他场景。
-
时间(日期或时间)类型:当您具有时间属性时,您可以使用
Date
、Time
、DateTime
、LocalDate
或LocalDateTime
Cypher 函数以及字符串参数。例如MATCH (n:Employee) where n.startDate = date($inDate) return n
其中
$inDate
将是类似于2019-05-23
的string
输入。 -
空间类型:对于空间属性,您可以在搜索短语中使用点或距离 Cypher 函数以及浮点参数。例如
MATCH (n:Store) where n.location = point({latitude:$lat, longitude:$long}) return n
其中
$lat
和$long
将具有类似于37.55
和-122.31
的float
输入。
搜索短语注意事项
-
除非在查询中设置了较小的限制,否则 Bloom 会将可视化处理的记录数限制为 10000。这是为了防止应用程序因返回太多记录的查询而挂起或崩溃。
-
建议搜索短语要么返回路径,要么返回一组节点。
仅返回关系可能会导致意外行为以及没有图可视化更改。 例如,以下查询
MATCH ()-[r:CONNECTED_TO]->() RETURN r
应重构为
MATCH p = ()-[r:CONNECTED_TO]->() RETURN p
-
此外,请注意,可以使用搜索短语修改数据,因为可以使用任何有效的 Cypher 查询。不建议将搜索短语用于此目的,因为最终用户可能不知道运行包含写入事务的搜索短语的后果。
-
搜索短语中的 Cypher 查询可以作为读取或写入事务发送到数据库(前提是您具有相应的权限)。为了作为写入事务发送,您需要首先在设置抽屉中启用此功能。Bloom 可以根据多个关键字检测某些写入查询,如果您的查询不包含任何关键字,则需要选中“写入事务”框才能将事务作为写入发送。如果选中“写入事务”框,则查询将始终作为写入事务发送。
