0

我已经用一个并不总是存在的布尔属性索引了一些文档(neo4j 的节点)。例如。节点1

标签:“标签A”

节点2:

标签:“标签 A”(注意,与 node1 相同的标签)特殊: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

您确定要索引只有 2 个可能值(真、假)的属性吗?因为索引意味着创建一个唯一值,通过它您可以知道数据库中的位置。这种独特的价值取决于财产的价值。

当您有许多具有相同值的属性时,索引会创建所谓的冲突 - 简单地说,它有多个索引查询的结果。当您按顺序遍历图形时(没有索引),您还必须从几个结果中进行选择。因此,在只有 2 个属性值的许多节点上建立索引可能毫无价值。

我建议使用此优先级值创建 1 个节点,并在您需要优先级节点时与其建立关系。

于 2012-08-28T15:36:23.477 回答
0

如果你想像这样对一个布尔值进行排序,你可以使用字符串排序:SortField.STRING。

这将对值进行 alfabetally 排序,因此首先为 false,然后为 true。没有值(空)来表示假。

于 2014-08-25T10:11:56.427 回答