Майк дает хорошее предложение, но, возможно, стоит сделать шаг назад и сначала рассмотреть вашу проблему. Из вашего комментария к отвечу Майка я понимаю, что вы ищете что-то вроде расширения тезауруса, но вместо «и» и «&» вместо других слов.
Возможно, я ошибаюсь, но, насколько мне известно, MarkLogic не предоставляет функции, чтобы автоматически позаботиться об этом. Такие функции, как search:search
и search:parse
, являются мощными, но не заходят так далеко. Вы сами можете взять строку поиска, как ваша, разбить ее на части вручную, чтобы обернуть ее в запрос cts: или использовать для этого что-то вроде search:parse
, а затем вытащить трюки, подобные Майку, чтобы пройти через ваш запрос - дерева и расширять любой конкретный узел поискового запроса, который вы хотели бы расширить определенным образом.
Отметка, на которую указывает Майк, дает пример того, как пройти дерево запросов и манипулировать им. Немного тяжелый для этого конкретного случая, но есть модуль тезауруса, который может помочь в различных общих случаях. В следующей главе Search Dev Guide объясняет свои особенности, и заканчивается небольшой пример того, как применять его:
http://docs.marklogic.com/guide/search-dev/thesaurus#chapter
HTH!
Я думаю, что это станет трудной задачей переписать запрос для случаев, когда моя строка запроса (например, в cts: element-word-query) «Джон и Джейн, Джозеф и Джордан и т. д ..», и мой документ содержит «Джон и Джейн, Джозеф и Джордан и так далее» .. "или одна и та же фраза с другой комбинацией «&» и «и». Может быть, это глупо с моей стороны, но я надеялся, что механизм, похожий на поиск с использованием стебля, будет на месте, чтобы разрешить это. Я имею в виду, что «работает» разрешается «запускать», и наоборот «&» будет разрешено «и» и наоборот. – callow
Вы правы, что в подобных случаях вы можете увидеть комбинаторный взрыв. Я думаю, они были бы довольно редкими. Ваш код расширения может проверяться на ограничение размера и предупреждать пользователя о достижении предела. – mblakele
Спасибо за предложение – callow