Подтвердить что ты не робот

Как удалить ярлыки в neo4j?

Как удалить метки в neo4j? Фактически я удалил все узлы и отношения, затем я воссоздал базу данных фильмов и все еще создаваемые ранее метки, появившиеся на веб-интерфейсе. Я также попытался использовать другое место для базы данных, и даже после удаления и повторной установки ярлыков все еще появились. Зачем? Где хранятся метки? После удаления программы папка базы данных и папка appdata были удалены.

Как воспроизвести? Установить neo4j → использовать пример базы данных фильмов → create (l: SomeLabel {name: "Причудливый ярлык" }) → удалить node → остановить нео, создать новую папку → начать neo → создать фильм shema → match (n) return (n) → SomeLabel появляется, даже если вы изменили папку или выполните удаление/установку.

Есть ли способ удалить ярлыки, даже если с ним нет node?

4b9b3361

Ответ 1

В настоящий момент (Neo4j 2.0.1) нет способа явно удалить метку после ее создания. Браузер Neo4j отобразит все метки, о которых сообщает конечная точка REST:

http://localhost:7474/db/data/labels

Отдельно, боковая панель браузера Neo4j, отображающая метки, неправильно обновляет список, когда теряет соединение с Neo4j. Перезагрузка веб-браузера должна работать.

Наконец, в визуализации браузера Neo4j произошла ошибка, которая отображает все метки, для которых был создан стиль. Если вы используете версию Neo4j с ошибкой, вы можете очистить стиль, нажав "Просмотреть таблицу стилей" в инспекторе свойств, затем щелкнув значок огнетушителя. По общему признанию, все это требует улучшения удобства использования.

Cheers, Andreas

Ответ 2

Это похоже на версию 2.3.0.

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

CREATE(m:Movie:Cinema:Film:Picture{title:"The Matrix"})

Мы можем запросить его с помощью

MATCH(m:Movie)
WHERE m.title = "The Matrix"
RETURN m

Он имел бы 4 метки: Movie, Cinema, Film и Picture

Чтобы удалить метку Picture из всех фильмов:

MATCH(m:Movie)
REMOVE m:Picture
RETURN m

Чтобы удалить метку Picture только из одного фильма:

MATCH(m:Movie)
WHERE m.title = "The Matrix"
REMOVE m:Picture
RETURN m

Ответ 3

Предположим, что мы создали продукт node, как показано ниже

PRODUCT_MASTER { product_code :"ABC", product_name:"XYX }

CREATE INDEX ON :PRODUCT_MASTER (product_code);

Теперь, даже если я удалю все узлы PRODUCT_MASTER из графика, мы будем продолжать получать PRODUCT_MASTER в браузере под метками node. Чтобы избавиться от этого, нам нужно также отбросить индекс.

DROP INDEX ON :PRODUCT_MASTER (product_code);

В neo4j-shell введите команду "schema", чтобы получить список индексов и соответствующих свойств.

Подводя итог, если мы удалим все узлы определенного типа, вам также нужно удалить индексы на node.

Ответ 4

Причина в том, что при создании ярлыка Neo4j индексирует эту метку. Вы можете удалить node, но индекс останется.

Угадав - если вы отбросите индекс на метке, он исчезнет из графического интерфейса (ПРИМЕЧАНИЕ. У меня нет доступа к Neo4j на данный момент, чтобы проверить эту теорию).

Ответ 5

Я только что нашел обходное решение (с neo4j 2.2 M04). Сбросьте содержимое БД на файл, выбросьте БД, затем вставьте свалку снова. Однако работает только для небольших БД.

Шаг1: выгрузите содержимое, используя neo4j-shell

$NEO4J_HOME/bin/> neo4j-shell -c 'dump match a return a;' > dump.temp

Шаг 2: выбросить БД (существует много способов удалить папку $NEO4J_HOME/data/graph.db/или везде, где находится ваша папка DB)

Шаг 3: снова вставьте дамп, используя neo4j-shell

$NEO4J_HOME/bin/> neo4j-shell -file dump.temp

Это должно отображать статистику о том, сколько узлов, отношений, свойств и меток было создано.

(И Step4 должен был удалить этот файл dump.temp, у него нет причин жить внутри папки bin.)

То, что я нахожу странным (и, возможно, Майкл или кто-то еще из neo4j может пролить свет на это): в моем случае, Step3 сказал мне, что было создано более 50 ярлыков. Однако, когда я открываю веб-интерфейс, перечисляются только те 15 ярлыков, которые я фактически использую. Таким образом, БД теперь чиста. Не совсем уверен, что он чист.