순회 구성 요소를 함수에 넣어 gremlin python을 사용하여 순회에 재사용 가능한 구성 요소를 만들려고하는데 일부 순회 구성 요소가 제대로 작동하지 않는 문제가 발생합니다.
설정시 github 저장소 의 최신 그래프에로드되는 구성 파일과 함께 도커 컨테이너를 사용하여 gremlin 서버를 실행하고 있습니다.
docker run -p 8182:8182 tinkerpop/gremlin-server:3.4.6 conf/gremlin-server-modern.yaml
내 테스트 파이썬 코드는 다음과 같습니다.
from gremlin_python.process.anonymous_traversal import traversal
from gremlin_python.process.graph_traversal import __
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
def connect_gremlin(endpoint='ws://localhost:8182/gremlin'):
return traversal().withRemote(DriverRemoteConnection(endpoint,'g'))
def n():
return __.values('name')
def r():
return __.range(2,4)
g = connect_gremlin()
# works as expected
g.V().map(n()).toList()
# returns an empty list
g.V().map(n()).filter(r()).toList()
# but using range step directly works as expected
g.V().map(n()).range(2,4).toList()
values
단계를 함수로 성공적으로 이동할 수 있지만 range
단계 와 동일한 작업을 시도 하면 2 ~ 4 번째 항목이 아닌 빈 목록이 반환됩니다. 아무도 내가 뭘 잘못하고 있는지 알아?
이 map
단계는 각 트래버 서의 상태를 새 상태에 매핑하기위한 것입니다. 단일 트래버 서의 맥락에서 range
0이 아닌 다른 곳 에서 시작하면 예상 한대로 작동하지 않습니다.
다음은 Python을 사용한 몇 가지 예입니다.
>>> g.V().map(__.range(0,1)).limit(5).toList()
[v[1400], v[1401], v[1402], v[1403], v[1404]]
>>> g.V().map(__.range(0,2)).limit(5).toList()
[v[1400], v[1401], v[1402], v[1403], v[1404]]
>>> g.V().map(__.range(1,2)).limit(5).toList()
[]
이것이 values
단계가 단계 내에서 작동 map
하고 range
작동하지 않는 이유 입니다.
map
단계를 사용하여 코드를 삽입하는 대신 순회에 점진적으로 추가 한 다음 완료되면 반복하지 않는 이유는 무엇입니까?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다