0

Neo4J の Cipher Query 言語 (または別の宣言型言語) を使用しながら、カスタム コード スニペットを参照することは可能ですか (たとえば、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 で使用される予定です。

ただし、Groovy で関数を宣言するために gremlin のような言語を使用できます。

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]}
于 2013-01-23T00:21:56.197 に答える