Скажем, у меня есть меню для пиццы, где каждый тип пиццы представлен в виде узла с меткой «Пицца», а каждая вершина - это узел с меткой «Топпинг». Чтобы получить всю пиццу с пепперони, напишите следующий запрос: MATCH (p: Pizza) - [: HAS] -> (t: Topping {type: "pepperoni"}) return p.
Тогда скажите, что у меня есть набор пользователей, которые могут указать свои любимые пиццы. MATCH (u: Пользователь) - [: HAS_FAVORITE] -> (p: Pizza).Узлы соответствия Cypher, которые имеют отношения ко всем узлам, соответствующим некоторым критериям
Каков наилучший способ найти пользователей, которые любят ВСЕ пиццы с пепперони?
Заранее благодарим за ваше время.
Производительность медленная, потому что она сканирует, собирает и оценивает каждый любимый. Я опубликовал решение, которое оценивает только избранных, имеющих pepperoni. Для первоначального совпадения используется индекс, и для поиска фаворитов используются взаимные обходы. –
Да, мой подход был всего лишь одним из способов сделать это и был в основном подходом грубой силы. Я рад, что вы нашли более эффективный подход. Это очень похоже на то, что произошло со мной позже, после того как я отправил свой ответ. – cybersam
Кстати, вы можете принять свой собственный ответ, если это лучше всего подходит для вас. – cybersam