나는 neo4j 데이터베이스에서 몇 가지 기본적인 유사 검색을하려고합니다. 다음과 같이 보입니다.Neo4j/Cypher : 감소를 사용하여 집합
begin
create (_1:`Article` {`name`:"Bow", `weight`:"20"})
create (_2:`Article` {`name`:"Shield", `weight`:"30"})
create (_3:`Article` {`name`:"Knife", `weight`:"40"})
create (_4:`Article` {`name`:"Sword", `weight`:"50"})
create (_5:`Article` {`name`:"Helmet", `weight`:"15"})
create (_6:`Order` {`customer`:"Peter"})
create (_7:`Order` {`customer`:"Paul"})
create (_8:`Order` {`customer`:"Mary"})
create (_9:`Accessory` {`name`:"Arrow",`type`:"optional", `weight`:"2"})
create _6-[:`CONTAINS` {`timestamp`:"1413204480"}]->_1
create _6-[:`CONTAINS` {`timestamp`:"1413204480"}]->_2
create _6-[:`CONTAINS` {`timestamp`:"1413204480"}]->_3
create _7-[:`CONTAINS` {`timestamp`:"1413204480"}]->_1
create _7-[:`CONTAINS` {`timestamp`:"1413204480"}]->_4
create _8-[:`CONTAINS` {`timestamp`:"1413204480"}]->_5
create _9-[:`BELONGS_TO` {`timestamp`:"1413204480"}]->_1
;
commit
아주 잘 알려지지 않은 데이터베이스입니다. 이 게시물에 대한 유일한 이유.
새 주문이 접수되면 유사한 주문이 이미 접수되었는지 여부를 알아야합니다. 비슷한 의미 : 기존 고객 또는 신규 고객 및 동일한 제품. 어려운 부분은 : (직접 또는 간접적으로) 포함 된 모든 노드의 가중치 합이 필요합니다.
여기에 내가 가진 무엇 :
START n=node(*)
MATCH p1 = (a:Order)-[*]->n, p2 = (b:Order)-[*]->m
WHERE a<>b AND n.name = m.name
RETURN reduce (sum="", x in p2 | sum+x.weight) limit 25;
을하지만, 그 P2가 건너 집계 할 수있는 권리 일이 아니다 보인다. Cypher는 경로가 아닌 컬렉션을 기대합니다.
정말로이 초보자 용 게시물을 유감스럽게 생각하지만 안심하십시오. 저는 매우 감사하는 초보자입니다. 감사! 꼬마 도깨비
당신은 단지'reduce (sum = 0, x IN nodes (p2) | sum + x.weight)'를 사용할 수 있습니다. –
당신은 경로에서 무제한 경로가 아닌 관계 유형을 사용해야합니다. –
안녕 마이클, 관계 유형이 내 프로젝트의 할 일 목록에 있습니다. 결국 경로는 결국 5 개 정도되지 않습니다. 이 단계에서, 나는 경로 길이에 대해 정말로 신경 쓰지 않는다, 나는 단지이 총을 똑바로하고 싶다. – rene