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' });
有没有办法通过 属性 的值为 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' });