2014-08-28 2 views
1

이것은 neo4j에 대한 첫 번째 응용 프로그램입니다. 더 나은 성능과 사용 편의성을 위해 순회 API를 사용하고 싶지만 대부분의 작업을 탐색 할 때 난처한 상황에 처하게되었습니다. 구현되지 않았습니다, 나는 스프링 데이터 -neo4j-rest (3.1.2) neo4j 커널 및 코어 버전 2.0을 사용하고 있습니다. Ex. Resttraversal의 Src에서 (두 평가자가 구현)하지 않으면 내가이 일Rest Traversal Neo4j java.lang.UnsupportedOperationException

public RestTraversalDescription evaluator(PathEvaluator evaluator) { 
     if (evaluator == Evaluators.all()) return add("return_filter",toMap("language","builtin", "name","all")); 
     if (evaluator == Evaluators.excludeStartPosition()) return add("return_filter",toMap("language","builtin", "name","all_but_start_node")); 
     throw new UnsupportedOperationException("Only builtin paths supported"); 
    } 


@Override 
    public TraversalDescription expand(PathExpander<?> expander) { 
     throw new UnsupportedOperationException(); 
    } 

    @Override 
    public <STATE> TraversalDescription expand(PathExpander<STATE> expander, InitialStateFactory<STATE> initialState) { 
     throw new UnsupportedOperationException(); 
    } 

도움이 필요 이상을 지원하는 버전의 올바른 버전을 사용하고 난 솔루션에 대한 일 브라우징보다 더 낭비 느낌이나요 ....

답변

1

트래버스의 최대 성능을 얻으려면, 내부적으로 Traversal API을 사용하는 을 사용하는 것이 좋습니다.

JAX-RS 주석을 사용하여 Java (또는 Groovy/Clojure/Scala/...) 클래스를 기본 작성합니다. 코드가 항아리로 패키징되어 Neo4j의 plugins 디렉토리에 배포됩니다. 주석이 달린 메소드는 Neo4j 서버에 새로운 REST 엔드 포인트가됩니다.

REST 탐색은 의도적으로 사용하기에 다소 오래된 기능이며 널리 사용되지 않는 기능입니다.

+0

감사합니다! 나 해보자. 그러나 내부적으로 Traversal API를 사용하는 경우에도 프로그래머는 경로 평가를 기반으로 탐색을 수행하는 방법을 관리해야하며 RestTraversal의 메서드 대부분은 구현되지 않습니다. 어떻게하면 해결할 수 있습니까? 관리되지 않는 확장 프로그램이나 API 문서를 사용하여 간단한 탐색을 수행하는 샘플은 도움이 될 수 있습니까? –

0

Neo4j 2.3으로 업그레이드 한 이후 Cypher를 관리되지 않는 확장 프로그램의 일부로 사용했습니다. 능률적으로 작동하는 것처럼 보입니다. 사이퍼가 제공하는 패턴 매칭 유연성을 달성했습니다.

관련 문제