5

我有一个数据集,我想在其中动态地按日期(升序和降序)排序。我通读了文档并按照指示创建了主索引的从属索引,其中排名靠前的值是我按 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 更改为使用我的从属索引,这确实有效......但我认为如果我每次用户都需要重新初始化索引时,这会很慢而且效率低下只是想按日期排序。是不是有一个参数可以在查询中插入以按日期排序?

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

我真的不想创建另一个从属索引只是为了按升序排序,因为我有数千行并且已经接近超过我的记录限制。这里肯定有另一种方式吗?

谢谢!

4

1 回答 1

10

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

您应该将要排序的所有索引存储在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 如此快速的原因,也是目前唯一的方法。

于 2016-02-19T07:28:09.123 回答