私はかなり単純なグラフを持っています。約 100 のノードと 400 の関係しかありません。特定の関係の存在に基づいて結果をランク付けするさまざまな暗号クエリを実行しようとしています。ただし、小規模なデータベースであっても、これらのクエリはタイムアウトになります。タイムアウトの原因となるクエリの問題を特定できる人はいますか?
以下のクエリは、さまざまなパターンを検索します。パターンが存在する場合、関係に重みが適用されます。最後に、重みを組み合わせて結果をランク付けし、重みが最も高いノード (最も重要な関係) が優先されるようにします。
START node=node(1)
MATCH (node)-[a?:REQUIRES]-(thing0)-[?:RELATED]-(stuff)
,(node)-[b?:REQUIRES]-(thing1)-[:RELATED]-(system1)-[:COMPOSITION]-(something1)-[?:VERSION]-(stuff)
,(node)-[c?:REQUIRES]-(thing2)-[:RELATED]-(something2)-[?:VERSION]-(stuff)
,(node)-[d?:REQUIRES]-(thing3)-[:REQUIRES]-(project1)-[:REQUIRES]-(thing6)-[?:RELATED]-(stuff)
,(node)-[e?:REQUIRES]-(thing4)-[:DESCRIBES]-(part)-[:DESCRIBES]-(thing5)-[?:RELATED]-(stuff)
WITH stuff
, count(distinct a)*.15 as shareA
, count(distinct b)*.35 as shareB
, count(distinct c)*.25 as shareC
, count(distinct d)*.10 as shareD
, count(distinct e)*.15 as shareE
WHERE has(stuff.__type__)
AND stuff.__type__='full.namespace.to.stuff'
SET stuff.weight = shareA + shareB + shareC + shareD + shareE
RETURN DISTINCT stuff
ORDER BY stuff.weight DESC