Shon
Shon

Reputation: 700

JSON-formatted extract-document-data options node throws "unbalanced pairs" error when using multiple extract-paths

MarkLogic REST Client API's default search endpoint results in server error when using a query options node that contains more than one extract-path even though the request is successful when either extract-path is used individually within extract-document-data:

{"errorResponse":{"statusCode":500, "status":"Internal Server Error", "messageCode":"RESTAPI-INTERNALERROR", "message":"RESTAPI-INTERNALERROR: (err:FOER0000) Internal error:  JSON build, unbalanced pairs: "}}

The offending paths:

<extract-path xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:FO="http://founders.archives.gov/">/tei:text/FO:metadata/FO:ProjectCode</extract-path>

<extract-path xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:FO="http://founders.archives.gov/">/tei:text/FO:metadata/FO:ShortProjectTitle</extract-path>

Only occurs when the format is JSON--XML format behaves as expected. This error can be reproduced across disparate datasets.

The entire options node:

<options xmlns="http://marklogic.com/appservices/search">
  <search-option>unfiltered</search-option>
  <quality-weight>0</quality-weight>
  <page-length>10</page-length>
  <extract-document-data selected="include">
    <extract-path xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:FO="http://founders.archives.gov/">/tei:text/FO:metadata/FO:ProjectCode</extract-path>
    <extract-path xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:FO="http://founders.archives.gov/">/tei:text/FO:metadata/FO:ShortProjectTitle</extract-path>
  </extract-document-data>
</options>

I would simply extract the parent element FO:metadata; however, that returns a string, indicating a dependency on a parsing library (does it not?) which I would rather avoid if possible.

Any suggested workarounds are appreciated. Thanks.

Upvotes: 0

Views: 106

Answers (1)

ehennum
ehennum

Reputation: 7335

There is a known bug with the inline response that should be fixed in 8.0-3.

In the interim, it should work to get the extracted fragments either as XML or as a multiplepart/mixed response (which, if the source documents are XML would also be XML).

Upvotes: 2

Related Questions