1

次のNeo4jClientコードがあります

var queryItem = _graphClient
        .Cypher
        .Start(new
        {
            n = Node.ByIndexLookup("myindex", "Name", sku),
        })
        .Match("p = n-[r:Relationship]->ci")
         .With("ci , r")
         .Return((ci, r) => new
         {
             N = ci.Node<Item>(),
             R = r.As<RelationshipInstance<Payload>>()
         })
         .Limit(5)
         .Results
         .OrderByDescending(u => u.R.Data.Frequency);

クエリは正常に実行されていますが、結果が正しく (つまり、降順で) 並べ替えられていません。ここにも Payload クラスがあります。

私のコードに何か問題がある場合はお知らせください。ティア。

4

1 に答える 1

3

あなたは.Results電話の後にソートを行っています。これは、Neo4j ではなく、.NET でそれを行っていることを意味します。Cypher クエリにソート命令が含まれていないため、Neo4j は 5 つの結果を返しています。

最後の 3 行を次のように変更します。

.OrderByDescending("r.Frequency")
.Limit(5)
.Results;

一般的なデバッグのヒントとして、Neo4jClient は次の 2 つのことを行います。

  1. 流れるようなインターフェイスを使用して Cypher クエリを作成するのに役立ちます。
  2. これらのクエリを実行します。これはかなりばかげたプロセスです。テキストを Neo4j に送信すると、オブジェクトが返されます。

実行は明らかに機能しているため、クエリが異なる理由を解明する必要があります。

  1. http://hg.readify.net/neo4jclient/wiki/cypherでドコを読んでください(理由があって書いています)
  2. そのページの「デバッグ」セクションを読んで、クエリ テキストを取得する方法を説明します。
  3. クエリ テキストを、実行されると予想したものと比較します。
  4. 違いを解決します (または、ライブラリのバグの場合はhttp://hg.readify.net/neo4jclient/issues/newで問題を報告してください)。
于 2013-05-15T06:38:03.410 に答える