Объединить несколько полей в одно поле в marklogic

Вот примеры XML-файлов, которые я загружаю в свою базу данных:

<?xml version="1.0" encoding="UTF-8"?>
<AXFRoot>
  <MAObject type="default" mdclass="NEWS_VIDEO" label="News Video">
    <ID name="">123456</ID>
    <Meta name="MAINTITLE" format="string" label="Title">Clifford Irving hugs his wife Edith after her release from a Nassau jail.</Meta>
    <Meta name="SYSTEM_OBJECTOWNER" format="string" label="Owner">DEFAULT</Meta>
 <Meta name="KEYWORDS" format="string" label="Keywords">clifford-irving edith-irving prisoner-releases 1972-08-18 nassau new-york US nassau-county-jails prisons wifes husbands media, [],</Meta>
  </MAObject>
<AXFRoot>

<?xml version="1.0" encoding="UTF-8"?>
<AXFRoot>
  <MAObject type="default" mdclass="NEWS_VIDEO" label="News Video">
    <ID name="">456123</ID>
    <Meta name="MAINTITLE" format="string" label="Title">CAMEL NEWS CARAVAN- SEGMENT 2: US Military women march in Formosa in 1950.</Meta>
    <Meta name="SYSTEM_OBJECTOWNER" format="string" label="Owner">DEFAULT</Meta>
 <Meta name="KEYWORDS" format="string" label="Keywords">Military women-march Formosa-in-1950 United-States-army US</Meta>
  </MAObject>
<AXFRoot>

<?xml version="1.0" encoding="UTF-8"?>
<AXFRoot>
  <MAObject type="default" mdclass="NEWS_VIDEO" label="News Video">
    <ID name="">78946</ID>
    <Meta name="MAINTITLE" format="string" label="Title">Commercial US Title</Meta>
    <Meta name="SYSTEM_OBJECTOWNER" format="string" label="Owner">DEFAULT</Meta>
 <Meta name="KEYWORDS" format="string" label="Keywords">commercial 2009 english advertisement movie parts</Meta>
  </MAObject>
<AXFRoot>

Что я хочу сделать здесь, так это то, что, когда я ищу слово US с помощью / search? Q = US, я хочу, чтобы у результата запроса было поле данных в JSON, которое содержит все места, в которых есть слово US.

Например: данные:{выпуск Клиффорд-Ирвинга Эдит-Ирвинга освобождает 1972-08-18 Нассау, Нью-Йорк, США, тюрьмы в Нассау, графства, тюрьмы, жены, СМИ, [],CAMEL NEWS CARAVAN, СЕГМЕНТ 2: Марш американских военных в Формозе в 1950. Военный женский марш Формоза-в-1950 США-армия США Коммерческая США Название}

Есть ли способ сделать такие запросы в MarkLogic?

1 ответ

Решение

Используя API поиска, вы можете получить обратно структуру XML с фрагментом, показывающим каждое совпадение в контексте.

Возможно, вам потребуется указать большое значение max-snippet-chars, чтобы убедиться, что вы получите весь текст фрагмента:

В любом случае, вы можете затем преобразовать структуру XML в объект JSON. Например, используя REST API, вы можете указать преобразование постобработки для поиска:

Кстати, словарь XML обеспечивает семантику разметки через значения атрибутов (особенно атрибут name). Чтобы иметь возможность индексировать и ограничивать поисковые совпадения на основе семантики разметки, следует рассмотреть возможность изменения модели, чтобы значения были разметкой, как в элементе MAINTITLE и элементе OBJECTOWNER. Общая разметка, такая как метаэлемент, не нужна для индексации.

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

Другие вопросы по тегам