2016-08-24 40 views
0

我使用的是基于外部索引(elasticsearch)的GEO Predicate的titan 1.0 db: 据我所知,有三种可能性:DISJOINT,WITHIN,INTERSECT。Titan db 1.0:Tinkerpop3获取索引警告查询地理之后Predicate

当我执行WITHIN

/geoWithin没有出现警告

g.V().has(STORY_LOCATION, geoWithin(circle)); 

但是当电话GEO DISJOINT:

g.V().has(STORY_LOCATION, geoDisjoint(circle)); 

我越来越指数警告

WARNING: Query requires iterating over all vertices [(storyLocation disjoint circle[30.0,30.0]:5000.0)]. For better performance, use indexes 

我想了解geoWithin与geoDisjoint之间关于索引问题的区别。

P.S: 
index configuration: 
PropertyKey storyLocation = createPropertyKey(tm, STORY_LOCATION, Geoshape.class, Cardinality.SINGLE); 

tm.buildIndex(indexName, TitanVertex.class).addKey(storyLocation).buildMixedIndex("search") 

回答

2

据我所知,geoWithin是唯一的谓词,它可以利用索引,所有其他人都是完全扫描。我想这是由搜索后端支配的技术限制。