1

私は現在、製品推奨ツールとして neo4j (v1.9.2) を試しています。

モデルは非常に単純で、いくつかのトランザクションがあり、それぞれが「CONTAINS」関係を使用して製品に関連付けられています。

製品を指定すると、次のサイファー クエリは、他のトランザクションに含まれる推奨製品を返します。

START product=node(3)
MATCH product-[:CONTAINS]-otherTransaction-[:CONTAINS]->other_product
WHERE product <> other_product
RETURN other_product.number AS productCode,
COUNT(other_product) AS ranking
ORDER BY ranking DESC

クエリは期待どおりに機能し、他の推奨製品を返しますが、データ セットが大きい場合は非常に遅くなります。cypher の代わりに JavaAPI アプローチを使用しても、大きな違いはありません。neo4j サーバーを使用しても、メモリ不足の問題が発生しました。

パフォーマンスの問題を進める方法として、いくつかの提案をいただければ幸いです。

  1. グラフをトラバースするためのマルチスレッドのアプローチはありますか?
  2. 上記の暗号クエリを複数のサブクエリに分割し、回答を照合するにはどうすればよいですか?
  3. 開始プロダクトに関連付けられているすべてのノードにアクセスしようとする代わりに、トラバース アプローチを変更する必要がありますか?
4

1 に答える 1

0

reco4j アプローチと neo4j での直接クエリの主な違いは、ソフトウェアでデータのモデルを構築し、推奨プロセスを高速化できる新しい情報を保存することです。一方、モデルの作成にはある程度の時間が必要ですが、その後はミリ秒単位で予測を実行できるはずです。

于 2013-08-26T13:28:28.487 に答える