У меня есть запрос MarkLogic, написанный на XQuery, и я хотел бы преобразовать его в Java API с помощью StructuredQueryBuilder. К сожалению, я не могу найти Java-эквивалент для cts:element-query. Не могли бы вы показать мне, как реализовать это на Java?

Запрос, который я хочу преобразовать:

cts:element-query(fn:QName("http://www.example.com/2009/pfi2","content"), cts:word-query("florists", ("case-insensitive","lang=en"), 4.5), ())
1
Paweł Adamski 18 Июн 2020 в 18:17

1 ответ

Лучший ответ

StructuredQueryBuilder.containerQuery() создает search:container-query в Search API. На enode REST API преобразует search:container-query в cts:element-query(), cts:json-property-query() или cts:json-property-scope-query() в зависимости от ситуации.

Подробнее см .:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#containerQuery-com.marklogic.client.query.StructuredQueryBuilder.ContainerIndex-com.marklogic.clientindquery.query.

http://docs.marklogic.com/guide/search-dev/structured-query#id_87231

Другой способ предоставить запрос в Java API - сериализовать cts:element-query() как JSON или XML, чтобы изучить структуру запроса, а затем использовать DOM для создания запроса и передачи запроса как полезной нагрузки RawCtsQueryDefinition. .

Для этого подхода см .:

http://docs.marklogic.com/guide/java/searches#id_45762

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/RawCtsQueryDefinition.html

Надеюсь, что это помогает,

1
Mads Hansen 18 Июн 2020 в 17:21