使用Endeca查询Date属性

时间:2014-03-03 06:49:00

标签: atg endeca

请帮助我解决使用ATG 10.2实施Endeca Guided Search 6.3.1的问题

背景: 我正在实现基本文本搜索,用户可以搜索日期(例如“2014年2月24日”),我需要返回具有与此日期匹配的任何日期属性的记录。

数据是开票数据,因此有类型为 date

的属性,如paymentDueDate,creationDate等

问题: 在Endeca中为日期类型属性索引的数据采用毫秒的形式。因此,当我必须搜索日期输入时,我首先将用户输入的字符串日期(搜索词)解析为毫秒,然后像...一样触发查询。

URLEneQuery --> N=0&Ntk=All&Ntt=<dateInMillis>

我的问题是,当我这样做时,我无法搜索一整天,因为日期转换为特定的毫秒,匹配的记录将是具有精确毫秒作为日期属性值的记录。我可以在一天的开始和结束的毫秒上尝试过范围过滤器,显然当你查询“全部”而不是特定属性时这不起作用。

问题: 是否可以在某个日期格式化索引Endeca中的日期属性,因为我不关心存储/索引毫秒/分钟/小时。我只需要日期,所以我可以在不解析字符串的情况下触发查询并在输入日期“2014年2月24日”触发查询,因为它是什么?

或者,如果有其他方式我可以使用演示文稿API查询MDEX?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

MDEX Developer Guide的第11章中,有一个如何处理DateTime属性的示例。你已经有几毫秒的日期这一事实符合它最终被Endeca摄取的方式。

就查询数据而言,您有两个选项,您可以通过将当天的00:00:01转换为毫秒作为开始时间和23:59来构建范围查询以获得返回日期:作为最终价值的当天59(显然需要处理在'缺失的'2000毫秒之外生成的发票的故障级别,但这是你要弄清楚的)。或者,您可以在数据处理阶段“截断”您的DateTime。这意味着您需要在提取时从日期中删除时间部分。要使用outputconfig.xml文件实现此目的,请在存储库中创建只读属性,然后使用新的RepositoryPropertyDescriptor填充其值以删除时间部分。

相关问题