MarkLogi c несколько параметров в расширении HTTP с оператором - PullRequest
1 голос
/ 03 февраля 2020

У меня есть MarkLogi c Расширение REST для функции GET, которая принимает строку для поиска совпадения слов.

Когда я использую /v1/resources/{module}?rs:q=bri+OR+ade, MarkLogi c интерпретирует "bri OR ade" как единое целое param:


title:  "bri OR ade"
result: null 

Можно ли как-нибудь сделать расширение службы таким же умным, как /v1/search?q=Brit+OR+Adele?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Если цель состоит в том, чтобы передать выражение запроса, Мадс предлагает хорошее решение.

Если цель состоит в том, чтобы передать несколько значений критерия для одного конструктора запроса, есть ли у ключа q список значений, если клиент повторяет параметр HTTP-запроса rs: q? Как в:

/v1/resources/{module}?rs:q=bri&rs:q=ade

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

0 голосов
/ 03 февраля 2020

Сложно предложить изменения, не видя ваш реальный код. Однако, если вы просто используете значение параметра для выполнения поиска:

cts:search(doc(), $q)

, тогда он сгенерирует запрос слова для этой фразы: cts:word-query("bri OR ade")

You может использовать функцию cts:parse(), чтобы проанализировать параметр запроса $q и сгенерировать требуемые критерии запроса:

cts:search(doc(), cts:parse($q))

, который затем выдаст следующий запрос:

cts:or-query((cts:word-query("bri", ("lang=en"), 1), cts:word-query("ade", ("lang=en"), 1)), ())

Чтобы ограничить поиск свойством firstname, используйте функцию cts.jsonPropertyScopeQuery():

cts.search(cts.jsonPropertyScopeQuery("firstname", cts.parse(customerName))); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...