我们可以在范围约束中使用用户定义的锚到计算桶吗?

时间:2016-04-08 09:55:22

标签: anchor marklogic facets

我有一些像这样的文档内容,并且我在元素“key”上有一个范围索引。

<root>
  <key>NAM</key>
  <key>NA</key>
  <key>North America</key>
</root>

生成构面时,我想将“NAM”和“NA”计算为一组,而不是每一组。

所以我尝试使用计算桶,或多或少像这个例子:

<constraint name="date">
  <range type="xs:dateTime" facet="true">
    <element ns="http://example.com" name="entry"/> 
    <attribute ns="" name="date"/>

    <computed-bucket lt="-P1Y" anchor="start-of-year" name="older">Older</computed-bucket>
    <computed-bucket lt="P1Y" ge="P0Y" anchor="start-of-year" name="year">This Year</computed-bucket>
    <computed-bucket lt="P1M" ge="P0M" anchor="start-of-month" name="month">This Month</computed-bucket>
    <computed-bucket lt="P1D" ge="P0D" anchor="start-of-day" name="today">Today</computed-bucket>
    <computed-bucket ge="P0D" anchor="now" name="future">Future</computed-bucket>

    <facet-option>descending</facet-option>
  </range>
</constraint>

但是我注意到锚通常是由MarkLogic预先定义的,所以我问:我可以使用我自己定义的锚点,就像下面的函数一样吗?

<computed-bucket ge="P0D" anchor="myAnchor.xqy" name="future">Future</computed-bucket>

2 个答案:

答案 0 :(得分:4)

您可以对您定义的范围使用bucket而不是computed-bucket:

http://docs.marklogic.com/guide/search-dev/appendixa#id_80046

会是这样的:

<bucket name="N" lt="O" ge="N">Terms that start with N</bucket>

希望有帮助,

答案 1 :(得分:0)

计算的存储区不是字符串值的选项。如果水桶太僵硬,可以考虑编写一个自定义方面。以下是允许对值模式进行分组的示例:

https://github.com/grtjn/ml-constraints/blob/master/grouping-constraint.xqy

HTH!