Как сделать приложение динамического поиска в MarkLogic? - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в MarkLogic. Можно ли создать поисковое приложение таким образом, чтобы, когда пользователь выполняет поиск, он / она получал ссылки на URI документов вместе с небольшим количеством сводки? Когда они нажимают на ссылку URI, они получают полный документ. Я также хочу дать аспекты коллекции, которые будут дополнительно фильтровать записи. Есть некоторые поля, которые я хочу использовать в качестве фасетов, эти поля присутствуют в документах некоторых коллекций, но отсутствуют в других коллекциях. Однако у этих коллекций есть общее уникальное поле, которое можно использовать для объединения или связывания их. Я хочу знать, как это возможно? Как мы делаем грани коллекции? Как мы можем объединить разные коллекции? Как сделать ссылку URI кликабельной и направить пользователей к полному документу? Я хочу ответить на такие вопросы, как показать мне все документы по обслуживанию, в которых есть слово «ведение хозяйства», затем я нажимаю на названия мест (информация о местоположении может быть в другой коллекции), чтобы еще больше сузить поиск, или я могу нажать на имена сотрудников, которые работали на этих «домашних» рабочих местах, чтобы еще больше сузить поиск. Буду очень признателен за вашу помощь. Я создал поисковое приложение, похожее на Top-Songs из учебников MarkLogic, но оно имело только одну коллекцию и одну и ту же схему XML для всех документов, но теперь разные коллекции и разные схемы XML меня смущают. Пожалуйста, также скажите мне, должен ли я использовать Search API или cts: search для достижения этой цели. Это достижимо, если хранить эти коллекции отдельно или мне нужно их денормализовать?

Буду очень признателен за вашу помощь. с уважением

1 Ответ

0 голосов
/ 30 августа 2018

Я бы рекомендовал взглянуть на slush-marklogic-node . Это генератор, который создает полноценный проект с достаточно полнофункциональным поисковым приложением. Он поставляется с некоторыми образцами данных JSON и имеет некоторые примерные аспекты, которые работают с ним, но вы также можете загружать другие данные и играть с ними при условии, что вы поместите их в коллекцию «data».

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

http://slush -default.demo.marklogic.com /

Обновление:

Что касается фасетов в коллекциях, то сгенерированное приложение поставляется с несколькими примерами фасетов, первый из которых основан на коллекциях. Это обусловлено возможностями огранки конечной точки REST /v1/search, которая, в свою очередь, опирается на search:search(). Эта функция принимает так называемые параметры поиска, которые могут определять ограничений . Вот два примера:

  <!-- Facet based on document collections, simple yet elegant -->
  <constraint name="Collection">
    <collection facet="true" />
    <!-- optionally enable a prefix to see a specific subset of facets
    <collection facet="true" prefix="data/" />
    -->
  </constraint>

  <!-- Example range facet based on the sample-data -->
  <constraint name="eyeColor">
    <range type="xs:string" facet="true" collation="http://marklogic.com/collation/codepoint">
      <facet-option>limit=5</facet-option>
      <facet-option>frequency-order</facet-option>
      <facet-option>descending</facet-option>
      <path-index>eyeColor</path-index>
    </range>
  </constraint>

Смотри также: https://github.com/marklogic-community/slush-marklogic-node/blob/master/app/templates/rest-api/config/options/all.xml#L105

НТН!

...