Nano Hash - криптовалюты, майнинг, программирование

Neo4j: объединение повторяющихся узлов

Я сделал несколько неправильных шагов в Neo4j, и теперь у нас есть граф с повторяющимися узлами. Среди повторяющихся пар полный набор свойств принадлежит первой из пары, а все отношения принадлежат второй в паре. Индекс - это node_auto_index.

Узлы:

Id  Name Age  From       Profession

1  Bob  23   Canada       Doctor
2  Amy  45   Switzerland  Lawyer
3  Sam  09   US  
4  Bob   
5  Amy
6  Sam

Отношения:

Id  Start  End   Type
1     4     6     Family
2     5     6     Family
3     4     5     Divorced

Я стараюсь не повторять весь пакетный импорт. Есть ли способ объединить узлы в cypher на основе свойства строки "name", сохранив при этом все свойства и отношения?

Спасибо!

06.08.2013

  • Я бы просто повторно сделал пакетный импорт, это определенно быстрее :) 07.08.2013
  • Хорошо, в итоге я этим и занимался. Для справки: два дня спустя запрос, который я попробовал, все еще выполнялся. 08.08.2013

Ответы:


1

Ладно, думаю, я разобрался:

START first=node(*), second=node(*) 
WHERE has(first.Name) and has(second.Name) and has(second.Age) and NOT(has(first.Age))
WITH first, second
WHERE first.Name= second.Name
SET first=second

Запрос все еще обрабатывается, но есть ли более эффективный способ сделать это?

06.08.2013

2

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

START first=node(*), second=node(*) 
WHERE has(first.Name) and has(second.Name) and has(second.Age) and NOT(has(first.Age))
WITH first, second
SKIP 20000 LIMIT 20000
WHERE first.Name= second.Name
SET first=second

И вам, вероятно, также придется разбивать обработку на страницы.

START n=node:node_auto_index("Name:*")
WITH n.Name, collect(n) nodes
SKIP 20000 LIMIT 20000
WHERE length(nodes) == 2
WITH head(filter(x in nodes : not(has(x.Age)))) as first, head(filter(x in nodes : has(x.Age))) as second
SET first=second
07.08.2013
  • Для ясности, вы создали поиск по индексу в этом запросе? Не могли бы вы объяснить, как это работает? 08.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..