我有items
图形分贝。 每个item
被连接到多个properties
,其可以通过多个共享items
。 我添加了一个search
是由几个定义节点properties
。
所以,我必须连接到多个(search_node)连接到多个(properties_nodes)(items_nodes)
现在,我想获得谁回答{X}的属性或更多该搜索项的列表。 通过匹配特性的数排序。
start se=node:node_auto_index(name = {name}), pr = node:node_auto_index(type="item_property")
MATCH p=(se) -[rt:SEARCH]- > (pr)<-[r]-(item)
WHERE Has(item.type) and (item.type = "item")
WITH item, collect(distinct pr.name) as rs
where length(rs) > {x}
RETURN item.name as item_name, length(rs) as matching_properties
ORDER BY matching_properties desc
对我来说,性能问题是,它会搜索所有符合条件的物品,即使是那些匹配只有一个属性是谁,然后删除所有谁是匹配不到{X}的项目。 如果{X}大于1,这是一个很大的浪费。
我怎样才能“MATCH”只有{X}匹配属性?
创建了一个匹配样本: http://console.neo4j.org/?id=adrgsh
(Neo4j的版本1.9.2)