【问题标题】:Send more than one term to algolia search发送多个词到 algolia 搜索
【发布时间】:2017-01-01 06:08:54
【问题描述】:

我正在我的网站中实现 algolia 搜索,我想获得一组与我发送到搜索的任何 id 匹配的数据,所以我需要知道如何将多个参数发送到搜索,所以我可以发送一组 id,如下所示:

let client = algoliasearch(APP_ID, API_KEY),
    index = client.initIndex(INDEX_NAME);

let term=["3223212","2423434"];
    index.search(term, callback)

这现在不起作用,有什么想法吗?甚至我如何使用另一个 algolia 功能(例如过滤)来实现我的目标?

【问题讨论】:

    标签: algolia


    【解决方案1】:

    如果您尝试通过对象的objectIDs 检索对象(您可以在创建时手动设置以匹配您的数据库ids),您可以简单地使用getObjects method

    从文档中摘录:

    您还可以检索一组对象:

    index.getObjects(['myObj1', 'myObj2'], function(err, content) {
      console.log(content);
    });
    

    如果您尝试列出属于具有特定 ID 的组的所有记录,您可以 use a facet 包含此 ID 并对其进行过滤。

    在您的记录中:

    {
      "group_id": "3223212",
      // or
      "group_ids": ["3223212", "2423434"]
    }
    

    在您的索引设置中:

    {
      attributesForFaceting: [
        'onlyFilter(group_id)'
      ]
    }
    

    查询时:

    let ids = ["3223212", "2423434"];
    let filters = ids.map(id => `group_id:${id}`).join(' OR ');
    index.search('', { filters: filters }, callback);
    

    【讨论】:

    • 感谢您的回答,我还有一个问题,如何设置“attributesForFaceting”设置?我正在阅读文档,似乎不可能使用 javascript 来做到这一点。是否可以在仪表板内完成?
    • 您确实也可以直接在 Dahsboard 内索引的“显示”选项卡中进行设置。您也可以在那里使用onlyFilter,您必须按照答案中的内容输入它。
    猜你喜欢
    • 2018-09-25
    • 2020-02-29
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多