Использование автоматического индекса NEO4J в Cypher, где оговорка о фильтрации
Вопрос
Используются ли автофинации на свойствах (узле или отношения) двигателем выполнения Cypher при выполнении фильтрации, где предложение? Если нет, есть ли способ сказать Cypher их использовать? Как насчет сторонних индексов (например, Lucene)?
Решение
Это то, о чем мы много думали, но, увы, пока нет.
Индексационная часть NEO4J скоро получит капитальный ремонт, и когда это произойдет, мы будем привязать Cypher ближе к нему, чтобы иметь возможность сделать это, и другие интересные вещи (например, эвристика, чтобы выбрать правильный индекс для использования).
Вы можете сделать это вручную, хотя. Если у тебя есть movies<-[:ACTS_IN]-actor
модель, и вы хотите, чтобы весь актер по имени Кевин Бэкон участвовал в фильме, вы можете написать это как:
START movie=node:movies("title:M*")
MATCH movie<-[:ACTS_IN]-actor
WHERE actor.name = "Kevin Bacon"
RETURN movie.title
Или вы можете сделать то же самое с индексами:
START movie=node:movies("title:M*"),
actor=node:actors(name="Kevin Bacon")
MATCH movie<-[:ACTS_IN]-actor
RETURN movie.title
Какой из них самый быстрый, трудно сказать. Зависит от.