MarkLogic гармонизирует очистку данных, как анализировать данные и разделять на

#json #parsing #marklogic #data-cleaning

#json #синтаксический анализ #marklogic #очистка данных

Вопрос:

Я работаю с MarkLogic 10. У меня есть база данных, которая загружена данными JSON. У меня есть одно поле, которое не было проанализировано. Что я хотел бы сделать, это что-то вроде: Образец данных:

 {"books": {"Harry Potter": {"text": "There are several harry potter books:/n-Chamber of Secrets/n--chess/n--dog/n-Goblet of Fire/n--dragon/n--broomstick "}
  

Желаемый результат выглядит примерно так:

 {"books": {"Harry Potter": {"subject": "There are several harry potter books:",
   "book 1" : { 
    "title": "-Chamber of Secrets",
    "Contents 1" : "--chess",
    "Contents 2" : "--dog"},
       "book 2" : { 
         "title":"-Goblet of Fire",
        "Contents 1" : "--dragon",
        "Contents 2" : "--broomstick"}}}}
  

Есть ли у MarkLogic функция, которая может легко это сделать?

Комментарии:

1. Неясно, как вы ожидаете перейти от образца ввода к образцу вывода. Можете ли вы описать логику и то, что обозначает разные книги? Почему бы не использовать массив объектов book вместо вложенной структуры?

2. Хорошо, не используя конкретно приведенный выше пример, здесь есть основной элемент, в котором указано «Список выполненных задач», что было выполнено корневым узлом, вторичным узлом, первой задачей в этом первом цикле подзадачи задачи через все задачи и подзадачи с использованием MarkLogic. Выше будет указано, что сделано сегодня, а затем задача, если есть подзадача, они будут узлами в этом узле. и т. Д

Ответ №1:

Для сопоставления строк в текстовой строке со свойствами выходного объекта потребуется сценарий.

Функции, доступные в серверном JavaScript, могут выполнять это сопоставление:

Начальным значением для редуктора может быть объект JavaScript, который содержит как состояние (глубину предыдущего узла в дереве), так и текущий выходной объект (инициализированный соответствующим образом).

Функция reducer может выполнять следующее:

Сопоставление также может быть выполнено на клиентских языках с поддержкой JSON перед загрузкой.

Надеюсь, это поможет,

Комментарии:

1. У меня есть способ использовать это в MarkLogic Qconsole

2. Да, JavaScript в соответствии с описанными выше линиями должен работать в буфере SJS QueryConsole (серверный JavaScript) или в модуле MarkLogic SJS.