Как удалить ярлыки в neo4j?
Как удалить метки в neo4j? Фактически я удалил все узлы и отношения, затем я воссоздал базу данных фильмов и все еще создаваемые ранее метки, появившиеся на веб-интерфейсе. Я также попытался использовать другое место для базы данных, и даже после удаления и повторной установки ярлыков все еще появились. Зачем? Где хранятся метки? После удаления программы папка базы данных и папка appdata были удалены.
Как воспроизвести? Установить neo4j → использовать пример базы данных фильмов → create (l: SomeLabel {name: "Причудливый ярлык" }) → удалить node → остановить нео, создать новую папку → начать neo → создать фильм shema → match (n) return (n) → SomeLabel появляется, даже если вы изменили папку или выполните удаление/установку.
Есть ли способ удалить ярлыки, даже если с ним нет node?
Ответы
Ответ 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 ярлыков, которые я фактически использую. Таким образом, БД теперь чиста. Не совсем уверен, что он чист.