Гремлин: вершины GroupBy, имеющие количество> 1

Я использую TITAN 0.4 и gremlin для обходов. Мое требование - идентифицировать дубликаты вершин в графе и объединить их. В графе> 15 M вершин.

gremlin> g.V.has('domain').groupBy{it.domain}{it.id}.cap

==>{google.com=[4], yahoo.com=[16, 24, 20]}

Я могу сгруппировать вершины, но мне нужны только те области (вершины), которые существуют более одного раза.

В приведенном выше примере мне нужно только вернуть ==>{yahoo.com=[16, 24, 20]}Ключ "домен" индексируется, если это имеет значение.

Пожалуйста, помогите мне здесь

2 ответа

Рассмотрим использование groupCount скорее, чем groupBy чтобы сохранить шаг подсчета идентификаторов в вашем собранном списке:

g.V.has('domain').groupCount(it.domain}.cap.next().findAll{it.value>1}

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

Старый вопрос, а вы пробовали ниже, чтобы форсировать индекс?

g.V.hasNot('domain', null).groupBy{it.domain}{it.id}.cap

Другие вопросы по тегам