我需要使用出生日期的索引为一个人的年龄范围约束配置计算桶。存储的年龄范围的格式为19-30、31-40、41-50等。由于可能的锚点值非常有限,因此我很难进行设置。例如,如果今天是2019年1月1日,对于19-30岁的年龄段,我需要输入出生日期,从1988-01-02(年龄最大的30岁)到2000-01-01(年龄最小的19岁) )。如何配置该计算桶?
对于“ lt”属性,如果我使用 lt =“-P19Y” ,则得到的结果少于2000-01-01,因此1999-12-31是我的上次包含生日,从而排除了那些今天已经19岁的人。
对于“ ge”属性,如果我使用 ge =“-P31Y” ,则包括1988-01-01的生日,该日期超出了我的预期范围,即那个人今天才31岁。
如果我可以将“明天”和“昨天”用作锚点,那么这些值将起作用。或者,如果我可以为ge指定一个值,表示“减去31年加1天”,那也可以。但鉴于局限性,我不确定如何进行这项工作。有没有人使用出生日期索引用存储桶配置人员年龄限制?
TIA
答案 0 :(得分:0)
我相信您正在寻找计算时段的“开始日”锚点选项。
<constraint name="age">
<range type="xs:date">
<element name="birthdate"/>
<computed-bucket name="18" ge="-P18Y"
anchor="start-of-day">18 and under</computed-bucket>
<computed-bucket name="19-30" ge="P30Y" lt="-P18Y"
anchor="start-of-day">19 to 30</computed-bucket>
<computed-bucket name="31-40" ge="-P40Y" lt="-P30Y"
anchor="start-of-day">31 to 40</computed-bucket>
<computed-bucket name="41-50" ge="-P50Y" lt="-P40Y"
anchor="start-of-day">41 to 40</computed-bucket>
<computed-bucket name="51" lt="-P50Y"
anchor="start-of-day">51 and older</computed-bucket>
</range>
</constraint>
可以在这里找到文档: http://docs.marklogic.com/guide/search-dev/search-api#id_22725
编辑:最初具有所需存储桶的ge和lt属性。