在 Algolia 中查找重叠范围?

Find overlapping ranges in Algolia?

您将如何在 Algolia 中搜索重叠的数值范围?

例如(我的用例),我正在处理日历上的事件。每个事件都有一个 dateendDate,我正在尝试查找一个月内发生的所有事件。现在我正在使用“numericFilters”进行搜索,如下所示:

{
  ...
  "facetFilters":"...",
  "numericFilters":"[[
    \"date:1517472000000 TO 1524985199999\",
    \"endDate:1517472000000 TO 1524985199999\"
  ]]"
}

这为我提供了一个月内开始或结束的所有事件。但是上个月开始到下个月结束的事件呢?我如何搜索这些?

不确定如何使用 elasticsearch 执行此操作,但是对于 Algolia,这是正确的方法。去掉 date 上的过滤,你可以得到任何时间开始并在这个月结束的所有事件:

"numericFilters":"[[
  \"endDate:1517472000000 TO 1524985199999\"
]]"

但是,如果您想要在一个月期间发生的所有事件,那么在该月之前或期间开始并结束期间或之后,您将过滤以删除那些在月底之后开始的那些以及那些在开始之前结束的那些 =22=] 个月:

"filters":"date < 1524985199999 AND endDate > 1517472000000"