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

Neo4j: шаг за шагом, чтобы создать автоматический индекс

Я создаю новую базу данных Neo4j. У меня есть тип node, который называется User, и мне нужен индекс по свойствам пользователя Идентификатор и EmailAddress. Как настроить индекс, когда база данных является новой? Я заметил, что в файле neo4j.properties есть поддержка для создания индексов. Однако, когда я устанавливаю их так

# Autoindexing

# Enable auto-indexing for nodes, default is false
node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
node_keys_indexable=EmailAddress,Identifier

И добавьте node и выполните запрос, чтобы найти Идентификатор, который, как я знаю, существует

START n=node:Identifier(Identifier = "USER0")
RETURN n;

то я получаю

MissingIndexException: Index `Identifier` does not exist

Как создать индекс и использовать его в стартовом запросе? Для этого я хочу использовать файлы конфигурации и cypher. то есть в настоящее время я играю только в консоли Power Tool.

4b9b3361

Ответ 1

Добавьте в файл neo4j.properties следующее:

# Autoindexing

# Enable auto-indexing for nodes, default is false
node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
node_keys_indexable=EmailAddress,Identifier

Создайте автоматический индекс для узлов

neo4j-sh (0)$ index --create node_auto_index -t Node

Проверьте, существуют ли они

neo4j-sh (0)$ index --indexes

Должен возвращаться

Node indexes:
node_auto_index

При запросе используйте следующий синтаксис для указания индекса

start a = node:node_auto_index(Identifier="USER0")
return a;

При автоматическом индексировании node имя индекса node_auto_index

Эта информация взята из комментария внизу этой страницы

Обновление

Если вы хотите индексировать свои текущие данные, которые были там до включения автоматической индексации (где Property_Name - это имя вашего индекса)

START nd =node(*) 
WHERE has(nd.Property_Name)
WITH nd
SET nd.Property_Name = nd.Property_Name
RETURN count(nd);

Ответ 2

В Neo4j 2.0 вы должны использовать метки и новые ограничения вместо

    CREATE CONSTRAINT ON (n:User) ASSERT n.Identifier IS UNIQUE
    CREATE CONSTRAINT ON (n:User) ASSERT n.EmailAddress IS UNIQUE

Если адрес электронной почты не уникален для пользователя, просто создайте простой индекс:

    CREATE INDEX ON :User(EmailAddress)

Ответ 3

Индексы, в основном сделанные по свойству, которое используется для условия. В Neo4j 2.0 индексы легко сделать сейчас.

Создать индекс на ярлыке

CREATE INDEX ON :Person(name)

Индекс отбрасывания на ярлыке

DROP INDEX ON :Person(name)

Создать ограничение уникальности

CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

Ограничить ограничение уникальности

DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

Для перечисления всех индексов и ограничений в neo4j-браузере используется следующая команда

:schema

Список индексов и ограничений для конкретной метки с помощью:

:schema ls -l :YourLabel