【问题标题】:Bucket Search & Dynamic queries桶搜索和动态查询
【发布时间】: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>

【问题讨论】:

标签: search range xquery marklogic


【解决方案1】:

解决此问题的一种方法是创建一个 TDE,它为每个数据元素的一行建立索引,其中名称和值各有一列。

然后,SQL 或 Optic 查询可以根据 value 列上的布尔表达式匹配适当的行。

希望对您有所帮助,

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多