Neo4j APOC триггер, ручной индекс - значения свойств в нижнем регистре - PullRequest
0 голосов
/ 07 декабря 2018

Я создал следующий триггер Neo4j APOC, который добавляет свойства узла в индекс вручную:

CALL apoc.trigger.add('CREATE_NODES_TRIGGER', "UNWIND {createdNodes} AS n 
WITH n WHERE labels(n)[1] IN ['Title','Name','Character'] 
CALL apoc.index.addNodeByName(labels(n)[1], n, keys(n)) 
RETURN true", {phase:'before'})

Когда я выполняю следующий запрос:

CALL apoc.index.nodes('Character','name:An*') YIELD node AS c, weight 
RETURN c.name, weight LIMIT 10

, он корректно возвращает данные:

c.name  weight
"Annette Porter"    1.0
"Anke Bauernfeind"  1.0
"Angel's Henchman"  1.0
"Anna Slovatzka Marshall"   1.0
"Andrew Horvath"    1.0
"Angela Somes"  1.0
"An-Soo 'Alison' Kim"   1.0
"Annette Holman"    1.0
"Anita Wilcox"  1.0
"Anna Cerdick"  1.0

, но в случае запроса в нижнем регистре name:an*:

CALL apoc.index.nodes('Character','name:an*') YIELD node AS c, weight 
RETURN c.name, weight LIMIT 10

результат будет пустым.

Я думаю, что перед добавлением значений свойств следует использовать нижний регистрих в указатель.Я прав?

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

CALL apoc.trigger.add('CREATE_NODES_TRIGGER', "UNWIND {createdNodes} AS n 
WITH n WHERE labels(n)[1] IN ['Title','Name','Character'] 
CALL apoc.index.addNodeByName(labels(n)[1], n, keys(n)) 
RETURN true", {phase:'before'})

Или, пожалуйста, предложите другой способ решения этой проблемы.Спасибо!

ОБНОВЛЕНО

Я нашел следующее свойство в neo4j.conf:

apoc.autoIndex.enabled=true

и добавил все узлы в индекс:

CALL apoc.index.addAllNodes('movies',{
  Title: ["primaryTitle", "originalTitle"],
  Name:  ["primaryName"],
  Character: ["name"]}, {autoUpdate:true})

Итак, сейчас у меня есть вопрос: будет ли apoc.autoIndex.enabled=true только отслеживать и отражать изменения уже добавленных узлов в индексе (с apoc.index.addAllNodes), или он также добавит вновь созданные Title, Name и Character узлов для индекса тоже?

...