Algolia:查询slave索引以获取按日期排序功能排序的最佳方式

时间:2016-02-18 07:22:23

标签: algolia

我有一个数据集,我希望动态按日期(升序和降序)动态排序。我阅读了文档,并按照指示创建了我的主索引的从属索引,其中最高排名值是由DESC订购的“日期”。日期采用正确的整数和unix时间戳格式。

我的问题是如何使用前端Javascript Algolia API动态查询这个新索引?

现在,我的代码如下所示:

this.client = algoliasearch("xxxx", "xxxxx");
this.index = this.client.initIndex('master_index');

this.index.search( 
    this.query, {
        hitsPerPage: 10,
        page: this.pagination,
        facets: '*',
        facetFilters: facetArray
    },
    function(error, results) {
        // do stuff
}.bind(this));

我尝试做的只是更改initIndex以使用我的slave索引而这确实有效...但我认为如果我需要每次用户重新初始化索引时这都是缓慢而低效的只是想按日期排序。是不是有一个参数,我可以在查询中插入按日期排序?

另外,我的第二个问题是,即使我将索引更改为从属索引,它也只能通过降序排序。我怎样才能按升序排序?

我真的不想创建另一个奴隶索引只是为了按升序排序,因为我有几千行,并且已经接近超过我的记录限制。当然必须有另一种方式吗?

谢谢!

1 个答案:

答案 0 :(得分:10)

  

我尝试做的只是更改initIndex以使用我的slave索引而这确实有效...但我认为如果我需要每次用户重新初始化索引时这都是缓慢而低效的只是想按日期排序。是不是有一个参数,我可以在查询中插入按日期排序?

您应该在this对象的不同属性中存储您要进行排序的所有索引:

this.indices = {
  mostRelevant: this.client.initIndex('master_index'),
  desc: this.client.initIndex('slave_desc')
};

然后你可以使用this.indices.mostRelevant.search()或this.indices.desc.search()。

这不是性能问题。

另请参阅专用库以创建即时搜索体验:https://community.algolia.com/instantsearch.js/

  

另外,我的第二个问题是,即使我将索引更改为从属索引,它也只能通过降序排序。我怎样才能按升序排序呢?

     

我真的不想创建另一个奴隶索引只是为了按升序排序,因为我有几千行,并且已经接近超过我的记录限制。当然必须有另一种方式吗?

这是在Algolia进行分类的唯一真正方法。这是设计使Algolia如此快速的原因,也是目前唯一的方法。