Мы разрабатываем корпоративное приложение, используя ML в качестве хранилища документов. Большое количество документов XML, связанных с бизнесом, хранится в ОД.
Чтобы реализовать бизнес-логику, нам нужен код для извлечения XML с применением фильтра к ним. Нравится: element_tag_1 = value1 && element_tag_2 > value2 || element_tag_3 = value2
Пример: emp_name = John && age > 40 || <available> != false
Здесь есть две части:
- Операторы "||" и "&&" для логической группировки
- Оператор>, <, = и! = Для сравнения </li>
В настоящее время мы используем приведенный ниже код для генерации запроса и его выполнения. ["Emp_name" и текст поиска "John" вставляются программно. Не показано в фрагменте ниже]
StringBuilder sb = new StringBuilder();
sb.append("<search:search xmlns:search=\"http://marklogic.com/appservices/search\">");
sb.append(" <search:query>");
sb.append(" <search:value-query>");
sb.append(" <search:element name=\"emp_name\"/>");
sb.append(" <search:text>John</search:text>");
sb.append(" </search:value-query>");
sb.append(" </search:query>");
sb.append(" <search:options>");
sb.append(" <search:sort-order type=\"xs:string\" collation=\"http://marklogic.com/collation/\" direction=\"descending\">");
sb.append(" <search:element name=\"filterName\"/>");
sb.append(" </search:sort-order>");
sb.append(" </search:options>");
sb.append("</search:search>");
QueryManager queryMgr = client.newQueryManager();
SearchHandle resultsHandle = new SearchHandle();
RawQueryDefinition query = queryMgr.newRawCombinedQueryDefinition(new StringHandle(sb.toString()));
query.setCollections(BaseDataConstants.FILTER_COLLECTIONS);
queryMgr.search(query, resultsHandle);
Является ли приведенный выше подход правильным?
Проблема 1: с помощью приведенного выше кода мы запрашиваем emp_name = John только для документа. Как мы можем иметь несколько значений-запросов с логической группировкой между ними, например: emp_name = John && age> 40
Проблема 2: В настоящее время мы делаем только сравнение, которое происходит по умолчанию. Как мы можем ввести здесь оператор для проверки>, <и! = В запросе значения. </strong>