如何在algolia中使用派生面进行过滤

如何在algolia中使用派生面进行过滤,algolia,Algolia,鉴于以下指标: { id: 1, distance: [4, 10] }, { id: 2, distance: [1, 2] }, { id: 3, distance: [9, 10] } 在启用distance上的镶嵌面以能够对其应用数字过滤器后,我想对我将调用distance\u range的派生属性应用附加过滤。它通过现有属性上的自定义逻辑派生其值,例如: // In JS: distance_range: Math.floor(( di

鉴于以下指标:

{
    id: 1,
    distance: [4, 10]
},
{
    id: 2,
    distance: [1, 2]
},
{
    id: 3,
    distance: [9, 10]
}
在启用
distance
上的镶嵌面以能够对其应用数字过滤器后,我想对我将调用
distance\u range
的派生属性应用附加过滤。它通过现有属性上的自定义逻辑派生其值,例如:

// In JS:
distance_range: Math.floor(( distance - 0.5 ) / 5) * 5 + "-" + Math.ceil(( distance ) / 5) * 5
将每个距离数转换为“0-5”、“5-10”等范围


得出这样一个指数的最佳方法是什么?我是否预先处理了数据,或者algolia是否具有动态转换属性的功能?

algolia使用自定义数据结构对数据进行索引,以便尽快提供结果。
实时重建索引的时间太长,无法得到答案,这就是为什么即使对于排序,Algolia也是如此

如果您只需要计算新属性以进行显示,那么使用前端逻辑和在显示数据之前转换数据的方法肯定是可以实现的

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

{
    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"]
}