Поиск и сортировка документов с использованием API поиска - PullRequest
1 голос
/ 30 апреля 2019

Используя API поиска, мне нужно объединить и найти два XML-документа в 2 разных каталогах по ключевому элементу и отсортировать результат по элементу во втором XML.

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

Версия ML - 8 (поэтому нет Optic API), и у нее нет возможности денормализовать XML во время приема, как есть, и в существующей системе.

Пример файла A

URI: /employee/123.xml

<employee>
    <empid>123</empid>
    <firstname>John</firstname>
    <lastname>Peter</lastname>
    <dept>sales</sales>
</employee>

Пример файла B

URI: /contrib/123.xml

<contribution>
    <empid>123</empid>
    <count>2000</count>
<contribution>

search:search(searchgrmr,searchoptions,startidx,endidx);

Я хочу достичь чего-то похожего на то, что мы достигаем в sql ниже

select * from a join b on a.col1 = b.col1 order by b.col2

1 Ответ

0 голосов
/ 30 апреля 2019

API поиска является слишком грубым, чтобы выполнить такое объединение легко. Я бы рекомендовал свернуть уровень и использовать cts:search для выполнения запроса «дробовика», который очень похож на работу объединения реляционных баз данных.

Взгляните на этот раздел в документации по индексированию :

В коде XQuery получите набор идентификаторов, соответствующих первому запросу, а затем введите это установить во втором запросе в качестве ограничения. Возможность использования диапазона Индексы на обоих концах делают работу эффективной.

...