0

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

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

背景:

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

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

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

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

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

4

1 回答 1

0

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

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

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

您可以将节点 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]}
于 2013-01-23T00:21:56.197 回答