Во-первых, важно понять роль индексов в Neo4j, так как индексы используются для поиска начальных точек на графике, после чего обход отношений и фильтрация используются для выполнения оставшейся части сопоставления с образцом и для выполнения запроса. .
Поэтому совет примерно такой же, как: «мы не рекомендуем использовать отношения в качестве отправных точек на графике», и мы находим это истиной чаще, чем нет.
Обычно, когда вам нужно выполнить поиск по индексу, вы имеете в виду определенные «вещи» в качестве отправных точек, а важные вещи на графиках обычно представлены узлами. Если мы спрашиваем «какие сотрудники связаны с этой конкретной компанией», мы заинтересованы в том, чтобы быстро начать с поиска этой конкретной компании и расширения, а не поиска всех: связей EMPLOYED_BY на графике и фильтрации по связанной компании, что займет гораздо больше времени.
Часто мы обнаруживаем, что тем, кто сталкивается с этим ограничением и в любом случае нуждается в таком быстром поиске отношений, возможно, придется пересмотреть свою модель. Часто, когда есть необходимость искать отношения как начальные места в графе, это указывает на то, что вещь, представленная отношением, достаточно важна, чтобы она действительно была узлом в графе (со своими собственными отношениями к ранее подключенным узлам ), так что это становится «запахом моделирования», который приводит к изменениям рефакторинга модели. Часто такого рода изменения кажутся более естественными после и дают больше возможностей для вещи в качестве узла, который был недоступен, когда он моделировался как отношение (например, возможность применить к нему несколько меток или подключить его). через отношения к большему количеству узлов, чем просто к двум оригиналам).
Все это говорит о том, что будут случаи, когда отношения действительно должны быть отношениями (либо по деловым причинам, либо потому, что это действительно наиболее практично для моделирования, чтобы их можно было сохранить как отношения), и с использованием эти отношения как отправные точки на графике имеют смысл.
С полными текстовыми индексами схемы , представленными в Neo4j 3.5, мы добавили возможность добавлять индексы отношений по типу (ам) отношения и свойству (или свойствам). Таким образом, возможность есть, если необходимо, после того, как вы исключили рефакторинг вашей модели.