鉴于以下指标:
{
id: 1,
distance: [4, 10]
},
{
id: 2,
distance: [1, 2]
},
{
id: 3,
distance: [9, 10]
}
在
distance
上启用 faceting 以便能够对其应用数字过滤器后,我想对我称为 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 是否具有动态转换属性的功能?
最佳答案
Algolia 使用自定义数据结构来索引您的数据,以便尽快交付结果。
实时重建索引太长而无法得到答案,这就是为什么即使是排序,Algolia requires you to duplicate your data into multiple indices 也是如此。
如果你只需要计算新的属性来显示,那肯定可以用前端逻辑来实现,autocomplete.js 和 instantsearch.js 都有一个方法可以在显示之前转换数据。
但是,由于您想对其进行过滤,因此 Algolia 需要数据结构中的此信息,因此您必须事先进行此计算。
另外,不要忘记将此新属性添加到 attributesForFaceting
。
关于algolia - 如何在 algolia 中按派生方面进行过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36195934/