【问题标题】:Querying on Date properties with Endeca使用 Endeca 查询日期属性
【发布时间】:2014-03-03 06:48:59
【问题描述】:

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

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

数据是发票数据,因此有诸如 paymentDueDate、creationDate 等类型为 date

的属性

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

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

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

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

或者如果有其他方法可以使用演示 API 查询 MDEX?

感谢任何帮助。

【问题讨论】:

    标签: atg endeca


    【解决方案1】:

    MDEX Developer Guide 的第 11 章中有一个示例说明如何处理 DateTime 属性。您已经拥有以毫秒为单位的日期这一事实与 Endeca 最终摄取的方式一致。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多