2015-11-16 4 views
1

Что такое best Способ запроса Titan для набора вершин набором идентификаторов?Titan multiple ID query

Предположим, у меня есть некоторые узлы с UUID в качестве свойства, и я хочу получить эти вершины с помощью коллекции идентификаторов - что является лучшим методом для запросов?

я могу цикл по коллекции ид и получить желаемые вершины по одному - вершине по вершине с этим API (в данном примере идент является моим петельные объектом по коллекции ид):

for(String userId: usersList) {  
    tg.getVertices("UUID", userId).iterator(); 
} 

Или это один:

for(String userId: usersList) {  
    tg.query().has("UUID", userId).vercities().iterator(); 
} 

но то, что я не могу найти способ, чтобы дать Titan список и получить в одном вызове, , что это лучший способ сделать это в Java?

EDIT

Другими словами, я ищу для эквивалентного пути для IN оператора SQL - но в титановой синтаксисом:

SELECT * 
FROM Users 
WHERE City IN ('fe4e2e2c-8638-4081-b6de-e10252e638e7', 'fess2c-8638-4rgf-b6de-e102sdf3447'); 

ответ

2

Что вы ищете com.tinkerpop.blueprints.Contains предикат:

tg.query().has("UUID", Contains.IN, usersLists).verticies().iterator(); 
4

Если вы используете Titan 1.0 (таким образом, TinkerPop 3.x), вы можете сделать это более непосредственно wi го Gremlin:

gremlin> g.V().has('name', within('marko','josh')) 
==>v[1] 
==>v[4] 
0

Лучше добавить его в индекс, а затем получить его в поиске графа с помощью итератора не является продуктивным, если вы думаете, что вы собираетесь искать на этом поле всегда лучше, чтобы добавить это для индексации.

Также используйте комбинированный индекс титана для уникальных полей, поскольку он намного быстрее.

Другим подходом было бы разделение вашего графика, чтобы вы знали, где его искать, а затем использовать итератор.