Трябва да ограничим търсенето в MarkLogic до най-новата версия на управлявани документи, като използваме REST API на Marklogic. Ние използваме MarkLogic 6.
Използвайки прав xquery, можете да използвате dls:documents-query()
като допълнителна опция за заявка (вижте Има ли някакъв начин да се ограничи търсенето с marklogic на конкретна версия на документа).
Но REST API изисква XML, а не произволен xquery. Можете да превърнете обикновените cts заявки в XML достатъчно лесно (изпълнете <some-element>{cts:word-query("hello world")}</some-element>
в QConsole).
Ако опитам това с dls:documents-query()
, получавам това:
<cts:properties-query xmlns:cts="http://marklogic.com/cts">
<cts:registered-query>
<cts:id>17524193535823153377</cts:id>
</cts:registered-query>
</cts:properties-query>
Освен че не е напълно прозрачен... колко безопасен е този номер? Ще трябва да го поставим в нашите опции за заявка, така че не е нещо, което можем да генерираме отново всеки път, когато имаме нужда от него. Разгледах две различни инсталации тук и номерът е един и същ, но гарантирано ли е, че е същият и ще се промени ли някога? На, например, ъпгрейд на MarkLogic?
Освен това, ако приемем, че номерът е безопасен, регистрираната заявка винаги ли ще бъде там? В документацията се казва, че регистрираните заявки могат да бъдат изчистени от системата по различно време, но става въпрос за дефинирани от потребителя регистрирани заявки и не съм сигурен доколко това се отнася за вътрешните заявки.
Това дори правилният подход ли е? Ако не можем да направим това, винаги можем да настроим колекции и да ограничим търсенето по този начин, но бихме предпочели да използваме dls:documents-query
, ако е възможно.