0

常に存在するとは限らないブールプロパティを使用して、いくつかのドキュメント(neo4jのノード)にインデックスを付けました。例えば。Node1

ラベル:「ラベルA」

Node2:

label: "label A"(注、node1と同じラベル)special:true

目標は、クエリ「ラベルA」のノード2をノード1よりも高くすることです。

ここにコードがあります:

Index<Node> fulltextLucene = graphDb.index().forNodes( "my-index" );
Sort sort = new Sort(new SortField[] {SortField.FIELD_SCORE,
                     new SortField("special", SortField.????, true) }); 
IndexHits<Node> results = fulltextLucene.query( "label", new QueryContext( "label A").sort(sort));

どうすればそれを達成できますか?

ありがとう

4

2 に答える 2

0

このようにブール値を並べ替えたい場合は、文字列の並べ替えを使用できます: SortField.STRING.

これにより、値がアルファベット順にソートされるため、最初に false、次に true になります。false の場合、値はありません (null)。

于 2014-08-25T10:11:56.427 に答える
0

可能な値が 2 つ (true、false) しかないプロパティをインデックス化してもよろしいですか? インデックス作成とは、データベース内の位置を知るための一意の値を作成することを意味するためです。この一意の値は、プロパティの値によって異なります。

同じ値を持つ多くのプロパティがある場合、インデックスはいわゆる衝突を作成します。単純に、インデックス クエリに対して複数の結果が得られます。グラフを (インデックスなしで) シーケンシャルにトラバースしている場合、いくつかの結果から選択する必要があります。したがって、プロパティ値が 2 つしかない多くのノードにインデックスを設定しても意味がありません。

ノードに優先順位を付ける必要があるときはいつでも、この優先度の値で 1 つのノードを作成し、それとの関係を作成することをお勧めします。

于 2012-08-28T15:36:23.477 に答える