我们正在开发一个使用 ML 作为文档存储的企业应用程序。大量与业务相关的 XML 文档存储在 ML 中。
为了实现业务逻辑,我们需要有代码,通过对它们应用过滤器来检索 XML。喜欢: element_tag_1 = value1 && element_tag_2 > value2 || element_tag_3 = value2
前任:emp_name = John && age > 40 || <available> != false
这里有两个部分:
- 运算符“||” 和“&&”用于逻辑分组
- 运算符 >、<、= 和 != 用于比较
目前我们正在使用下面的代码来生成查询并执行它。[“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:目前我们只对默认情况下发生的比较进行=。我们如何在此处引入运算符来检查值查询中的 > 、 < 和 != 。