是否可以使用Neo4J的密码查询语言(或其他声明性语言),但仍然引用自定义代码片段(例如,根据ElasticSearch / Lucene搜索的结果执行自定义WHERE子句?)
如果其他GraphDB具有支持此功能的声明性语言,请拍摄。我绝对不会受到Neo4J的束缚。
背景
我正在研究是否将Neo4J包含在我当前的堆栈中,后端已经包含ElasticSearch,MongoDB和Redis。
特别是Redis'快速设置交叉点功能,我可能会创建一些粗鲁的图形查询。 (尽管可能不像graphDB那样高效)。我在定义DSL方面有很长的路要走,需要支持的查询类型。
但是,我设计了CMS这样的内容类型,并且我想用图表建模的这些内容类型之间的关系事先是未知的。
因此,理想的情况是,填充所需的Redis集合(使用Mongo作为源代码)来支持我基于Contenttypes的所有查询及其在设计时未知的关系,至少可以说是混乱的。希望你仍然关注。
这让我得出结论,可能需要另一个解决方案,这就是为什么我特别关注GraphDb&amp;和Neo4J(如果其他人可能更适合我的用例做拍摄)< / p>
答案 0 :(得分:0)
如果您将内容类型建模为节点,则无需事先了解它们。
javascript中的用户定义函数计划在今年晚些时候用于cypher。
你可以使用像gremlin这样的语言在groovy中声明你的函数。
您可以将节点ID存储在redis中,然后将redis返回的id数组传递给cypher查询以进行进一步处理。
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]}