我正在使用基于外部索引(elasticsearch)的GEO Predicate的titan 1.0 db: 据我所知,有三种可能性:DISJOINT,WITHIN,INTERSECT。
当我执行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")
答案 0 :(得分:2)
据我所知,geoWithin
是唯一可以使用索引的谓词,其他所有谓词都是全扫描。我想这是搜索后端所规定的技术限制。