2013-08-23 2 views
3

Я изучаю, как использовать Marklogic 6 через API Java, и теперь я хотел бы узнать, как искать/перечислять/разбивать страницы на документы внутри Java и JAXB. В частности:Листинг/поиск/разбиение на страницы документов с использованием API Java Marklogic и JAXB

Пусть у меня есть набор пользовательских документов так:

/user/joe453.xml 
/user/karla47.xml 
. 
. 
. 
/user/sam.xml 
/user/tom.xml 

И пользователь несколько определяется следующим образом:

<user userId="aaabbb123" passwordHash="bcryptHash"> 
    <role id="USER"> <--- other role types here depending on the kind of user. 
</user> 

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

1) Какую функциональность Java API следует использовать в простейшем случае в списке/paginate для всех этих пользователей?

2) Я знаю, что мог использовать специальный XQuery с помощью XCC, но я действительно узнал плохие уроки в последний раз, когда я использовал строки с жестко запрограммированными запросами в SQL. Я вижу подобную судьбу с XML/Marklogic.

3) Есть ли лучший способ сделать это?

Спасибо!

ответ

3

Dat Глушитель:

Чтобы поиск вернуть целые документы, вы можете настроить параметры запроса, чтобы вернуть весь документ в качестве сниппета:

<transform-results apply="raw"/> 

Затем на клиенте, вы можете пройти содержимое результатов поиска, которые JAXB сохранял с помощью unmarshaller JAXB для гидратации объектов Java.

В качестве альтернативы API Java включает в себя пример SearchCollector, который возвращает многостраничную/смешанную полезную нагрузку, где каждая часть является документом результатов поиска. Документы, которые были сохранены через JAXB, могут быть затем отменены.

Специфика в стороне, общая стратегия вполне разумна - воспользуйтесь поиском MarkLogic для поиска сохраненных объектов, интересующих любое поле объекта или объекта.

Первичный ключ, конечно же, по-прежнему имеет ценность для прямого доступа. То есть, если у объекта есть некоторая комбинация полей, которые неизменно соответствуют идентификатору объекта, используйте эти поля, чтобы сделать документ uri, и использовать его для прямого доступа к объекту, когда поиск будет излишним.

Смежные вопросы