Гремлин: вершины 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