【问题标题】:Is it possible to reference custom code in the Where-clause of Neo4J's Cipher Query Language?是否可以在 Neo4J 的密码查询语言的 Where 子句中引用自定义代码?
【发布时间】:2013-01-23 08:21:56
【问题描述】:

是否可以使用 Neo4J 的密码查询语言(或其他声明性语言)但仍引用自定义代码 sn-ps(例如基于 ElasticSearch/Lucene 搜索的结果执行自定义 WHERE 子句?)

如果其他 GraphDB 有支持此的声明性语言,请拍摄。我绝不会被 Neo4J 所束缚。

背景:

我正在研究是否将 Neo4J 包含在我当前的堆栈中,在后端已经包含 ElasticSearch、MongoDB 和 Redis。

特别是 Redis 的快速集合交集功能,我可能会创建一些粗鲁的类似图形的查询。 (尽管可能不如 graphDB 性能好)。我在定义 DSL 方面还有很长的路要走,需要支持的查询类型。

但是,我正在设计一个内容类型的 CMS,而我想用图表建模的这些内容类型之间的关系事先并不知道。

因此,填充所需的 Redis 集合(以 Mongo 作为源)以支持我基于 Contenttypes 及其在设计时未知的关系的所有查询的理想情况至少可以说是混乱的。希望你还在关注。

这让我得出结论,可能需要另一种解决方案,这就是为什么我特别关注 GraphDb'd 和 Neo4J(如果其他人可能更适合我的用例,那就拍吧)

【问题讨论】:

    标签: graph nosql neo4j


    【解决方案1】:

    如果您将内容类型建模为节点,则无需事先了解它们。

    javascript 中的用户定义函数计划在今年晚些时候用于 cypher。

    不过,您可以使用 gremlin 之类的语言在 groovy 中声明您的函数。

    您可以将 node-id 存储在 redis 中,然后将 redis 返回的 id 数组传递给密码查询以进行进一步处理。

    start n=node({ids}) 
    match n-[:HAS_TYPE]->content_type<-[:HAS_TYPE]-other_content
    return content_type, count(*)
    order by count(*) desc
    limit 10
    
    parameters: {"ids": [1,2,3,5]}
    

    【讨论】:

    • 内容(如在 contenttype-in​​stances 中)将被建模为节点。例如:特定的博文将是内容类型为“博文”的节点。您是说:“如果您将内容类型建模为节点,则无需事先了解它们。”你的意思是在 Node4J 中对吧?如果是这样,确实,这就是我想使用 Neo4j 的原因。不同之处在于将内容作为节点而不是如上所述的内容类型。顺便说一句:github.com/neo4j/javascript-plugin 是使用 Javascript 测试 Gremlin 的项目,还是我可以关注的 Gremlin 项目中有适当的问题?
    • 我认为该插件还没有进一步开发。但如果它适合您的需要,您可以选择它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多