Агрегация с Gremlin в Neo4j для получения связанных новостей

Я учусь использовать Gremlin в Neo4j.

У меня следующая структура тегов: Спорт -> (связанные) -> Футбол -> (связанные) -> Бельгия.

С каждым тегом у меня связаны каналы. В каждой ленте у меня есть несколько лент новостей (новостей).

Когда я ищу в ленте Sport, я также хочу вытащить все, что связано с футболом и Бельгией (связанные с ним теги).

С Cypher я получаю результат с таким запросом:

START tag = node (106949) MATCH tag- [: FILHA * 1..10] -> fof WITH fof MATCH fof- [: USA] -> каналы RETURN LIMIT 10;

С Gremlin я получаю все теги, связанные с тегом Sport, следующим образом:

x = []; gv (106949) .as ("tagsFilha"). out ("FILHA") .aggregate (x) .loop ("tagsFilha") {it.loops ‹10}. итерация (); х

С помощью Gremlin можно было ловить ленты новостей по тегу (Спорт) следующим образом:

g.v (startNode) .out ("США") .out ("CONTEM") .sort {it.qtde_visualizacoes} ._ () [0..10]

Но указанный выше запрос не вернул новости, связанные со связанным тегом. Пример: Поиск по спорту также получает новости о теге Бельгия (связанный с ним тег).

Может ли кто-нибудь указать мне ссылку?

Благодарность!


person jsopra    schedule 09.10.2013    source источник


Ответы (1)


Я не уверен, что полностью следую вашей схеме, но если у вас уже есть все теги Sport в x с этим:

x=[];g.v(106949).as("tagsFilha").out("FILHA").aggregate(x).loop("tagsFilha"){it.loops < 10}.iterate();x

и вы знаете, что это дает вам ваши ленты:

g.v(startNode).out("USA").out("CONTEM").sort{it.qtde_visualizacoes}._()[0..10]

Тогда почему бы просто не запустить конвейер с x, чтобы получать фиды таким же образом:

x._().out("CONTEM").sort{it.qtde_visualizacoes}._()[0..10]

Другими словами, для всех тегов, находящихся в иерархии, просто перейдите к фидам.

person stephen mallette    schedule 09.10.2013