эффективный запрос свойства массива в neo4j - PullRequest
0 голосов
/ 09 октября 2018

Я хочу запросить узлы, которые имеют определенное значение в свойстве строкового массива.Например, мои узлы могут иметь 2 свойства: имя (строка) и псевдонимы (массив строк).Я создал индекс для обоих свойств, используя что-то вроде CREATE INDEX ON :F2(name).Я могу запросить свойство name, используя что-то вроде шифра, и результат будет немедленным:

MATCH (p:F2) WHERE p.name = 'john' RETURN p;

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

MATCH (p:F2) WHERE ANY(item IN p.aliases WHERE item = 'big john') RETURN p;

Похоже, либо запрос не является оптимальным, либо индекс не используется.Может кто-нибудь подсказать, как это правильно сделать.Я довольно новичок в neo4j и cyper: - (

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете изменить свой график, чтобы сделать псевдоним узлом.Таким образом, любой узел F2 имеет ноль или более псевдонимов.

CREATE INDEX ON :Alias(name)

Тогда вы можете запросить его с помощью чего-то подобного ...

MATCH (p:F2)-[:HAS_ALIAS]->(:Alias {name: 'big john'})
RETURN p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...