индексация — Neo4j php создает индексы

Я заглядываю в обычного клиента neo4j (https://github.com/jadell/neo4jphp/wiki)

Выглядит очень перспективно и удобно в использовании. Однако я немного запутался по поводу индексов. Я знаю, что в Neo4j вы можете добавить индекс:

CREATE INDEX ON :Person(name)

Как я правильно помню, это автоматически индексировало бы все узлы Person по имени.

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

$shipIndex = new Everyman\Neo4j\Index\NodeIndex($client, 'ships');

(PS: Что именно делает эта строка выше?)

$heartOfGold = $client->makeNode()
->setProperty('propulsion', 'infinite improbability drive')
->save();

// Index the ship on one of its properties
$shipIndex->add($heartOfGold, 'propulsion', $heartOfGold->getProperty('propulsion'));

Теперь мой вопрос. Когда я должен вручную добавить индексы в мой PHP-код, как в примере выше, и когда я должен добавить индекс в свою базу данных Neo4j и рассчитывать на автоматическую индексацию?
И в последнем случае, я могу также использовать поиск по индексу в коде, как это:

$match = $shipIndex->findOne('captain', 'Zaphod');

?

1

Решение

Вышеупомянутые первые методы добавляют узел и его свойство движения к индексу люцена. Не то чтобы этот вид индекса был помечен как устаревший с некоторых пор.

Схемы индексов теперь работают следующим образом:

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

CREATE INDEX ON :User(login);

Этот вид индекса, так как neo4j 3.0 также может использоваться с CONTAINS предложение, например, вернуть мне всех пользователей, где логин содержит neo буквы :

MATCH (n:User) WHERE n.login CONTAINS 'neo' RETURN n

будет использовать созданный выше индекс для быстрого поиска. (nb: на данный момент CONTAINS чувствителен к регистру)

Для полного объяснения различий между устаревшим и индексом схемы, это действительно хорошо объяснено здесь: Автоиндекс Neo4j, устаревший индекс и схема меток: различия для полнотекстового поиска по отношению к узлу

К сожалению, упомянутая вами библиотека больше не поддерживается, как вы можете видеть из истории коммитов. https://github.com/jadell/neo4jphp/commits/master

Neo4j активно развивается, особенно в версии 3.0 теперь доступен новый двоичный протокол, который повышает производительность и уменьшает задержку по сравнению с http.

Я бы посоветовал вам (отказ от ответственности: я являюсь автором следующей библиотеки), чтобы использовать современный клиент, такой как https://github.com/graphaware/neo4j-php-client . (Обратите внимание, что это чистый драйвер, он не предлагает, например, функции ogm, вам придется писать свои собственные запросы Cypher)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]