【发布时间】:2020-07-18 09:11:00
【问题描述】:
MarkLogic 9.0.8.2
在数据库中,我们有这样的数据
<xmldata>
<data>
<name>name1</name>
<value>E012M9876</value>
<data>
<data>
<name>name2<name>
<value>E015M6789</value>
</data>
<data>
<name>name3</name>
<value>E012M9876</value>
<data>
<data>
<name>name1<name>
<value>E015M6789</value>
</data>
</xmldata>
用户可以搜索任何运算符,如“=、=、Between”&数据是动态的,所以我们不能创建固定的桶,查询可以这样
- name1:>=E011M1234 AND name1:
- name1:>E014M8769(将返回 1 条记录)
- name1:
- name2:=E015M6789(将返回 1 条记录)
我查看了 xQuery 中的动态存储桶实现,但没有找到。 https://docs.marklogic.com/guide/rest-dev/search#id_69918
那么请你帮忙看看如何编写代码来实现这个场景?
如果将数据存储在属性中而不是元素中,会是更好的方法,我们也可以这样做。
<data>
<value name="name1">E015M6789</value>
</data>
【问题讨论】:
-
您是想弄清楚如何构造一个计算存储桶docs.marklogic.com/guide/search-dev/appendixa#id_91755,还是想知道如何在搜索选项docs.marklogic.com/guide/search-dev/search-api#id_22725 中应用它?
-
感谢 Mads Hansen 的回复,抱歉回复晚了,在这种情况下,这完全取决于用户放置数据的方式,因此我们无法获取存储桶的固定值,所以我们希望它运行就像我们使用范围选项将数据放在约束中一样,那么处理它的最佳方法是什么?
-
并且不能选择使用名称制作元素?即
<name1>E015M6789</name>和<name2>E015M6789</name2>?即使你想保留原始数据,你也可以实现信封模式marklogic.com/blog/envelope-design-pattern
标签: search range xquery marklogic