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
参数,因为它是高级方法(如 addFacetRefinement
、addNumericRefinement
、...),因此可以安全使用在 setQueryParameter
。但以后可能会改变,所以更新助手版本时要小心。
在我的数据库中,我为每条记录存储了一个到期日期。有些记录不会过期(永远有效),这些记录有一个 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
参数,因为它是高级方法(如 addFacetRefinement
、addNumericRefinement
、...),因此可以安全使用在 setQueryParameter
。但以后可能会改变,所以更新助手版本时要小心。