1

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

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

数据是发票数据,因此有诸如 paymentDueDate、creationDate 等属性,它们的类型为日期

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

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

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

问题:是否可以以某种日期格式对 Endeca 中的日期属性进行索引,因为我不关心存储/索引毫秒/分钟/小时。我只需要日期,所以我可以在不解析字符串的情况下触发查询,并按原样在输入日期“24-Feb-2014”上触发查询?

或者,如果有另一种方法可以使用演示 API 查询 MDEX?

任何帮助表示赞赏。

4

1 回答 1

1

MDEX 开发人员指南的第 11 章中,有一个关于如何处理 DateTime 属性的示例。您已经以毫秒为单位的日期这一事实与 Endeca 最终摄取的方式一致。

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

于 2014-03-03T08:56:24.140 回答