Algolia facet 按 empty/null 值过滤

Algolia facet filter by empty/null value

有没有办法通过 属性 的值为 null 或空字符串的值来过滤命中?

即显示所有没有作者的对象

facetFilters=作者:null

facetFilters=作者:''

或将其包含在 OR 值列表中?

即显示作者设置为 Twain 或没有作者的所有对象

facetFilters=(作者:Twain,作者:null)

facetFilters=(作者:Twain,作者:'')

不幸的是 - 从今天开始 - Algolia 不支持它。一个 work-around 可能是在它为 null 时推送一个额外的值,例如推送 author: 'unknown' 可以用来过滤。

或者,您可以在索引时添加一个 _tags 值,稍后您可以使用该值进行过滤:

const tags: string[] = [];
if (!obj.author) tags.push('no-author');
idx.saveObject({ ...obj, _tags: tags });

然后,您可以稍后按标签进行过滤,如下所示:

const res = idx.search('', { filters: '_tags:no-author' });