Использование Neo4jclient для поиска свойства с регулярным выражением

У меня есть рабочий шифрованный запрос, но я не могу заставить его работать в Neo4jclient.

Мой шифрованный запрос

start n=node(*) where has(n.Name) and n.Name =~ 'X.*' return n;

который возвращает все узлы со свойством Name, которое начинается с X.
Я намеренно не использую здесь индексы или отношения.

Моя первая детская попытка (даже без регулярного выражения, которое я планирую использовать) терпит неудачу с тайм-аутом (!) на res.Results

var res = _client.RootNode
    .StartCypher("n")
    .Where<Meeting>(m => m.Name == "X")
    .Return<Meeting>("m");

person LosManos    schedule 07.03.2013    source источник


Ответы (1)


Пытаться:

var query = _client.Cypher
    .Start("n", graphClient.RootNode)
    .Where("has(n.Name)")
    .And()
    .Where("n.Name =~ 'X.*'")
    .Return<Meeting>("n");

Это сработало на моей машине, вы получите такие результаты, как:

var results = query.Results;

Редактировать: кажется, я понял, почему у вас возникли проблемы, в начале вы поставили StartCypher("n"), а затем использовали m вместо n. Так что Return<Meeting>("m") должно быть Return<Meeting>("n")

person Charlotte Skardon    schedule 08.03.2013
comment
Спасибо. Я хотел бы отметить ваш ответ как ответ, но я все еще получаю тайм-аут. Что-то с neo4jclient не работает? (Я только что обновил и изменил And().Where(n... на AndWhere(n... но безрезультатно. - person LosManos; 04.04.2013
comment
Я отследил query.Query.QueryText, и он отлично работает в пользовательском интерфейсе веб-администратора. Но через neo4jclient я получаю тайм-аут. - person LosManos; 04.04.2013
comment
Я не знаю, по какой причине вы получите тайм-аут, занимает ли запрос какое-то время в консоли? - person Charlotte Skardon; 05.04.2013
comment
Неа. Совсем нет времени. Ну... 21 мс, когда n=node(*) и 1 мс, когда n=node(=), но я считаю, что это вообще не время. - person LosManos; 08.04.2013
comment
Есть ли способ отследить, что будет с Neo4j? Если подумать, сниффер. - person LosManos; 08.04.2013
comment
Если вы запустите Fiddler, вы увидите все перемещения по сети. Вероятно, вам потребуется изменить любое соединение в вашем коде на «127.0.0.1», чтобы оно стало «127.0.0.1». для скрипача, чтобы забрать его. Если вы используете DNS-имена, это не должно быть проблемой. - person Charlotte Skardon; 08.04.2013
comment
Вы можете проверить запрос Cypher следующим образом: var text = query.Query.QueryText; var params = запрос.Запрос.ПараметрыЗапроса; Подробнее здесь: bitbucket.org/Readify/neo4jclient/wiki/cypher - person Wheelie; 03.08.2013