Algolia Facet按数字排序

时间:2016-08-23 15:06:14

标签: algolia

我正在使用algoliasearch和algoliasearchHelper库使用algolia网站上的hogan模板示例构建即时搜索界面。

我遇到了排序数字方面的问题。我正在使用通过composer安装的algoliasearch-client-php填充索引。我将一个整数传递给索引对象,如下所示:

"cost_to_build"  => (int) $project->data['approximate_cost'],

但是在索引中,我得到了类似的东西:

cost_to_build: "15.00"

然后产生一个方面顺序,如:

15,25,3,5,6。

甚至thoguh {sortBy: ['name:asc']}。如果我手动将所有索引值更改为字符串中的整数(太多而不是手动更新,加上我们定期更新),则排序可以根据需要进行。

任何人都有任何提示吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

值从整数转换为字符串的事实本身就是令人惊讶的,我不知道为什么会发生这种情况。

但是,如果没有解决根本原因,仍然有一个简单的解决方案。 sortBy参数为also able to accept a comparison function,因此您可以将这些值转换为前端而不是后端的整数。

这些方面应该有效:

helper.on('results', function(content){
  //get values  ordered only by count ascending using a function
  content.getFacetValues('cost_to_build', {
    sortBy: function(a, b) {
      return parseInt(a.name, 10) - parseInt(b.name, 10);
    }
  });
});