鉴于以下指数:
{
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"]
}
得出这样一个指数的最佳方法是什么?我是否预先对数据进行了处理,还是有这样一个特性来动态地转换属性?
发布于 2016-03-24 09:53:25
Algolia使用自定义数据结构对数据进行索引,以便尽可能快地交付结果。
实时重建一个指数太长,无法得到答案,这就是为什么,即使对排序,阿尔戈里亚需要将数据复制到多个索引中。。
如果您只需要计算显示的新属性,它肯定可以用前端逻辑实现,autocomplete.js和instantsearch.js都有一种在显示数据之前转换数据的方法。
但是,由于您希望对其进行筛选,Algolia需要数据结构中的这些信息,因此您必须事先完成此计算。
另外,不要忘记将这个新属性添加到attributesForFaceting
中。
https://stackoverflow.com/questions/36195934
复制相似问题