Algolia:如何添加(是否可能)添加数字析取细化?

Algolia: How do I add (is it possible) to add a numeric disjunctive refinement?

在我的数据库中,我为每条记录存储了一个到期日期。有些记录不会过期(永远有效),这些记录有一个 null 过期日期。

所以-比方说- SQL 语句获取应该显示的记录的逻辑是:

SELECT * FROM listings WHERE expires > NOW() OR expires IS NULL;

要在 Algolia 中获取这些记录,我目前使用的是:

helper.addNumericRefinement('expires', '>=', moment().utc().startOf('day').unix());

expires = null 记录留在外面,我希望它们进入。

我正在尝试为自己保存一个 cron 脚本,该脚本每晚都会从 Algolia 中删除所有过期的项目。这可能吗?

绝对可行。

遗憾的是,Algolia 不支持对 NULL 值进行优化。因此,首先您需要更新索引脚本并将 NULL 值转换为整数或字符串。在你的情况下,我可能会选择 -1 而不是 NULL.

然后你可以设置查询参数filters给助手:

helper.setQueryParameter('filters','expires = -1 OR expires >= ' + current_time);

它会成功的。我创建了一个小的 jsFiddle 供您实时观看:https://jsfiddle.net/tdkxnuyn/

现在 Algolia Helper JS 不使用 filters 参数,因为它是高级方法(如 addFacetRefinementaddNumericRefinement、...),因此可以安全使用在 setQueryParameter。但以后可能会改变,所以更新助手版本时要小心。