0

最新の Titan 0.4.1 docsによると、このコードは結果セット内の頂点を並べ替えるために機能するはずです。

graph.query().has("name",CONTAINS,"john").orderBy("age",Order.DESC).limit(10).vertices()

このタイプのクエリを、潜在的に大きな頂点セット全体で実行したいので、インデックスを作成したいと考えています。ドキュメントは次のことを示唆しています:

ほとんどの外部インデックス バックエンドは、ネイティブかつ効率的に順序付けをサポートしています。ただし、 orderBy メソッドで使用されるプロパティ キーは、結果の順序付けをネイティブにサポートするために、このインデックス バックエンドでインデックスを作成するように構成する必要があります。これは、orderBy キーがクエリ キーと異なる場合に重要です。プロパティ キーがインデックス化されていない場合、並べ替えにはすべての結果をメモリにロードする必要があります。

orderBy具体的には、Elasticsearch バックエンドの場合、この方法をサポートするインデックスを作成するにはどうすればよいでしょうか?

KeyMakerindexedメソッドに渡す簡単な 3 番目のパラメーターはあります?

graph.makeKey("age").dataType(Integer.class).indexed("search", Vertex.class).make();
4

1 に答える 1

2

ES でプロパティにインデックスを付けるだけです (他のプロパティと同様)。

Titan でのインデックス作成 (間違っています。orderBy は最適化されません):

graph.makeKey("age").dataType(Integer.class).indexed(Vertex.class).make();

ES でインデックス付けされています (正しい; ES でのネイティブの結果の順序付け):

graph.makeKey("age").dataType(Integer.class).indexed("search", Vertex.class).make();

乾杯、ダニエル

于 2013-12-19T23:07:26.863 に答える