如何仅按值匹配节点? (没有定义特定属性)

时间:2015-05-06 16:07:51

标签: neo4j cypher

我想只按值搜索节点,这可以在任何节点属性中。我知道这是一个昂贵的操作,但节点将被一些关系条件切断。 我想要这样的东西:

MATCH (n: {*:"Search value"})
RETURN n

* *暗示"任何财产"。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

有趣的花絮可以在这个摘要中找到关于这个主题以及它可能没有实现的原因

https://docs.google.com/document/d/1FPfGkgzhcRXVkleBLBsA92U94Mx4yafu3nO-Xf-NzsE/edit#heading=h.pyvdg2rbofq

  

动态密钥表达式的语义

使用像<mapExpr>[<keyExpr>]这样的动态密钥表达式要求<mapExpr>求值为映射或实体,<keyExpr>求值为字符串。如果不是这种情况,则会在编译时或运行时生成类型错误。

如果给出了这一点,则评估<mapExpr>[<keyExpr>]首先将keyExpr评估为字符串值(键),然后将<mapExpr>评估为类似地图的值(地图)。最后,通过在地图中执行键的查找来计算<mapExpr>[<keyExpr>]的结果。如果找到密钥,则关联的值将成为结果。如果找不到密钥,<mapExpr>[<keyExpr>]将评估为NULL

因此,评估<mapExpr>[<keyExpr>]的结果可以是任何值(包括NULL

  

注意事项

动态属性查找可能会诱使用户对属性键名称中的信息进行编码。这是不好的做法,因为它会干扰计划,导致不自然的数据模型,并可能导致耗尽可用的属性密钥ID空间。通过在查询使用具有动态属性键名称的动态属性查找时发出警告来解决此问题。

答案 1 :(得分:0)

据我所知,没有。在我看来,通过使用elasticsearch或solr之类的东西在图形上创建搜索索引,可以更好地实现您真正想要做的事情。这将使您能够搜索所有属性。您在选择分析器时选择分析器,可以选择精确匹配或部分匹配。