2014-08-28 3 views
0

Titan에서 지형 공간 중심의 인덱스를 만들 수 있습니까?타이탄의 지형 공간 중심 좌표가 가능합니까?

가이드 https://github.com/thinkaurelius/titan/wiki/Vertex-Centric-Indices의 패턴을 따라 렉스 마스터 콘솔에서 패턴 만들기를 시도했지만 실패했습니다.

geo_location=g.makeKey("geo_location").dataType(Geoshape.class).make(); 
g.makeLabel("edge_label").sortKey(geo).signature(geo).make(); 

==>An error occurred while processing the script for language [groovy]. 
All transactions across all graphs in the session have been concluded with failure:  
java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
java.lang.IllegalArgumentException: 
Key must have comparable data type to be used as sort key: geo_location 

나는 정기적으로 지리 공간 색인을 작성하려고했지만, 문제의 지리 공간 속성 가장자리의 높은 숫자로 정점을 조회 할 때이 낮은 성능을 제공합니다.

나는 다음을 수행하여 원 내의 모든 에지를 검색 할 수 있다고 (바람직하게는 (x, y)로부터 거리별로 정렬 됨) 상상한다. 타이탄 서버 0.4.4를 사용

x = 0 
y = 0 
radius = 10 
circle = Geoshape.circle(current_position_x, current_position_y, nearby_radius) 
some_vertex_with_centric_index.outE('edge_label').has(location, WITHIN, circle) 

이는 카산드라 2.0.3 + 탄성 검색

답변

0

나는 생각하지 않는다/W/할 수 있습니다. 키 정렬 가장자리를 오름차순 또는 내림차순으로 정렬합니다. 어떤 순서로 위치를 정렬합니까? 내가 귀하의 경우에서하는 것은 이것이다 :

  • 미리 계산 정점 B에 정점 A로부터의 거리
  • 저장
  • 이 같은 종류의 키를 미리 계산 된 거리를 사용하는 에지 속성으로 미리 계산 된 거리

는 다음과 같이 조회 :

location.outE('edge_label').has('distance', T.lte, radius).inV() 

건배, 다니엘

+0

이것은 문제를 해결할 수 있지만 에지 번호가 매우 커질 수 있으므로 많은 수의 위치에서 가능하지 않습니다 - 위치 정점은^2입니다. –

+0

위치를 색인/정렬하는 방법은 다양합니다. 이 작업을 수행하는 한 가지 방법은 location 속성에 대해 각 차원에 하나씩 두 개의 정수 인덱스를 유지하는 것입니다. Geoshape를 사용하여 기하학적 객체 내의 점을 검색하려면 다음을 수행 할 수 있습니다. 1. Geoshape 바운딩 박스 내의 점 목록을 검색합니다. 2. geoshape 바운딩 상자 안의 geoshape 바깥에있는 가장 큰 바운딩 상자 내의 점 목록을 검색합니다. 3. 1 - 점 2 점 4. 테두리 상자가 "작을 때까지 반복하여 반복하십시오. 5. 포인트가 도형 안에 있는지 확인하고 지오 센스 중심으로부터의 거리별로 정렬하십시오. –

관련 문제