Neo4j Cypher: ограничение начальных узлов после запроса lucene

У меня есть запрос Cypher, который начинается с поиска списка узлов из индекса с использованием запроса lucene:

START n=node:people("name:ROBERT")
MATCH n--o
RETURN n.name, COLLECT(o.task_name)

который становится очень медленным, когда запрос индекса возвращает большое количество результатов. Я хотел бы ограничить количество узлов, используемых в остальной части запроса, т.е. ограничить n=node:people("name:ROBERT"), скажем, тридцатью результатами.

Я не вижу очевидного способа сделать это в lucene или Cypher.

Я полагаю, что мог бы разделить его на два запроса, например:

НАЧАЛО n=узел:люди("имя:РОБЕРТ") ВОЗВРАТ n LIMIT 10

Затем выполните вторую часть запроса, используя возвращенные узлы, но мне было интересно, есть ли лучший способ?


person Rob Goldsmith    schedule 26.06.2012    source источник


Ответы (1)


Извините, но нет, сейчас нет лучшего способа.

person Andres    schedule 26.06.2012
comment
Спасибо за быстрый ответ. Могу ли я запросить это как потенциальную будущую функцию? - person Rob Goldsmith; 27.06.2012
comment
... еще один вопрос - есть ли способ объединить два запроса в один? Я делаю запросы к API REST, и мне кажется неэффективным делать два отдельных вызова. Благодарю. - person Rob Goldsmith; 27.06.2012
comment
Мы обсуждали добавление LIMIT к предложению WITH — это решит вашу первую проблему. Мы также обсудили добавление UNION в Cypher, что решит ваш второй вариант использования. Однако обе эти функции пока находятся на стадии планирования. Извиняюсь. - person Andres; 27.06.2012