我已经使用布尔属性索引了一些文档(neo4j的节点),这些属性并不总是存在。 例如。 Node1
标签:"标签A"
节点2:
标签:"标签A" (注意,node1的相同标签) 特殊:真实
目标是让Node2高于节点1进行查询"标记A"。
这里是代码:
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));
我该如何实现?
由于
答案 0 :(得分:0)
你确定索引一个只有2个可能值(true,false)的属性吗? 因为索引意味着创建一个唯一的值,通过它您可以知道数据库中的位置。这个独特的价值取决于房产的价值。
当你有许多具有相同值的属性时,索引会创建所谓的冲突 - 简单地说,它有多个索引查询结果。当您按顺序遍历图形(没有索引)时,您还有几个必须选择的结果。因此,在只有2个属性值的许多节点上拥有索引可能毫无价值。
我建议使用此优先级值创建1个节点,并在需要确定节点优先级时与其建立关系。
答案 1 :(得分:0)
如果要对这样的布尔值进行排序,可以使用字符串排序:SortField.STRING。
这将对值进行合理排序,首先是假,然后是真。没有值(null)是假的。