如何过滤algolia中的派生面

时间:2016-03-24 08:31:05

标签: algolia

考虑以下指数:

{
    id: 1,
    distance: [4, 10]
},
{
    id: 2,
    distance: [1, 2]
},
{
    id: 3,
    distance: [9, 10]
}

distance上启用分面以便能够在其上应用数字过滤器后,我想对我将调用distance_range的派生属性应用其他过滤。它通过现有属性上的自定义逻辑来获取其值,例如:

// In JS:
distance_range: Math.floor(( distance - 0.5 ) / 5) * 5 + "-" + Math.ceil(( distance ) / 5) * 5

将每个距离数转换为范围" 0-5"," 5-10"等

{
    id: 1,
    distance: [4, 10],
    distance_range: ["0-5", "5-10"]
},
{
    id: 2,
    distance: [1, 2]
    distance_range: ["0-5"]
},
{
    id: 3,
    distance: [9, 10]
    distance_range: ["5-10"]
}

达到这样一个指数的最佳方法是什么?我是否事先对数据进行了处理,或者algolia是否具有即时转换属性的功能?

1 个答案:

答案 0 :(得分:3)

Algolia使用自定义数据结构对您的数据编制索引,以便尽快提供结果 实时重建索引太长,无法得到答案,这就是为什么,即使是排序,Algolia requires you to duplicate your data into multiple indices

如果您只需计算显示的新属性,那么使用前端逻辑肯定是可以实现的,autocomplete.jsinstantsearch.js都有一种方法可以在显示之前转换数据。< / p>

但是,由于您要对其进行过滤,因此Algolia需要在数据结构中使用此信息,因此您必须事先进行此计算。
另外,不要忘记将此新属性添加到attributesForFaceting