Създаване на индексирани възли на neo4j cypher чрез rest api

Опитвам се да създам индексиран възел в cypher със следния синтаксис:

neo4j-sh (?)$ start m=node:person(UID= "1")  return m;
==> +------------+
==> | m          |
==> +------------+
==> | Node[64]{} |
==> +------------+
==> 1 row
==> 0 ms
==> 
neo4j-sh (?)$ start n = node(64) return n.UID;
==> EntityNotFoundException: The property 'UID' does not exist on Node[64]

Защо изглежда, че възелът е създаден, но свойството, което създавам и което изглежда успешно върнато, не съществува?

Има ли по-лесен начин? Използвах функцията на py2neo:

neo4j.GraphDatabaseService("http://localhost:7474/db/data/").get_or_create_indexed_node(index='person', key='UID', value=self.id, properties={'UID' : self.id})

Но това изглежда е отхвърлено --- вече не работи с най-новата версия на py2neo, която изглежда вече не поддържа аргумента properties (и за бъдещи хора index се заменя с index_name).


person Mittenchops    schedule 18.04.2013    source източник


Отговори (2)


Индекс и свойство са две различни неща.

Изглежда, че имате възел във вашата графика с индекс на име person и двойка ключ/стойност UID: "1". Първата ви заявка получава вашия възел чрез неговия индекс. Но индексът не е свойство на възела. Можете да активирате уеб администратора, за да визуализирате как се управляват индексите във вашата графика.

Доколкото знам, в документацията няма нищо за това как да създавате индекси с cypher, но можете лесно да използвате REST API, за да ги манипулирате (връзка).

person MrDosu    schedule 18.04.2013
comment
Не е ли индексът човек, както е дадено от start n node:/person/? Свойствата се дефинират в скоби след. Py2neo използва REST API под капака, за да създаде индекса. - person Mittenchops; 18.04.2013
comment
Да, горната заявка използва индекса с име лице, търсейки двойката ключ/стойност UID:1. Докато на практика двойките ключ/стойност често се създават, за да отразяват свойствата на възела, това не е необходимо, доколкото знам. Ако погледнете документацията на индекса REST (docs.neo4j.org/chunked /stable/rest-api-indexes.html) можете лесно да създавате индекси ключ/стойност, които нямат нищо общо със свойствата на възлите. - person MrDosu; 18.04.2013
comment
Мисля, че не разбирам --- искате да кажете, че моят синтаксис не създава ключ/стойност в индекс, или изобщо не създава възел, или не създава свойство в индексиран възел? - person Mittenchops; 18.04.2013
comment

Използвайки регулярен израз, заменям **text in bold** на <strong>text in bold</strong> в низ, след което показвам message, използвайки {{{message}}} в моите EmberJS шаблони. Проблемът е, че също искам да заменя #anyhashtag с {{#link-to "hashtag" "anyhashtag"}} и това работи само с {{message}}.

Така че идеята ми беше да създам {{strong}}text in bold{{/strong}} помощник, който също би бил по-сигурен, но очевидно помощниците работят само като {{strong "text in bold"}}, който няма да работи, ако имам връзки в удебелен шрифт или по-сложни низове.

Мога ли да направя помощник, който работи като моята идея?

Благодаря!

- person MrDosu; 19.04.2013

Методът не е отхвърлен и аргументът properties все още е валиден, както преди. Единствената промяна, както идентифицирате, е промяната от index на index_name за първия аргумент.

Документацията е тук:

http://book.py2neo.org/en/latest/graphs_nodes_relationships.html#py2neo.neo4j.GraphDatabaseService.get_or_create_indexed_node

Обърнете внимание, че properties действително ще се използва само когато възелът все още не съществува, т.е. когато правите „create“, но не и когато правите „get“. В противен случай съществуващият възел ще остане такъв, какъвто е.

person Nigel Small    schedule 19.04.2013