Algolia在swift中按类别搜索

时间:2017-12-30 11:51:27

标签: swift algolia

我有一个"记录"像Algolia这样的指数结构

[{ "date": "2018-01-04T13:00:00.000Z", "title": "Record 1", "status": "new", }, { "date": "2018-01-04T14:00:00.000Z", "title": "Record 2" "status": "accepted", }]

使用swift,我试图通过" new"来获取对象。地位,但没有运气。根据文档,这应该是我所需要的。

let apiClient = Client(appID: "XXX", apiKey:"XXX")
let index = apiClient.index(withName: "records")
let query = Query()
query.filters = "status:new"
index.search(query) { (content, error) in
    print("RESULTS", content, error?.localizedDescription)
}

我也试过

    query.filters = "status:\"new\""

我甚至无法在Algolia的仪表板GUI中获得这样的查询。你需要"启用"在仪表板的某个地方进行这种查询?

如果我禁用过滤器,我会得到所有记录(如预期的那样),但过滤不会返回任何结果,也不会出现错误。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

首先,您的JSON中有一些小问题(一些额外的,),请参阅正确的表单:

[{
    "date": "2018-01-04T13:00:00.000Z",
    "title": "Record 1",
    "status": "new" 
}, 
{
    "date": "2018-01-04T14:00:00.000Z",
    "title": "Record 2",
    "status": "accepted" 
}]

如果正确导入了对象,则使用过滤器所需的是使用attributesForFaceting进行设置。这应该是一次性操作,您可以从后端或快速执行此操作。

如果您想在swift中执行此操作,请参阅link,了解如何执行此操作。

基本上,您只需要一次设置设置:

let customFilter = ["status"]
let settings = ["attributesForFaceting": customFilter]
index.setSettings(settings)

重新加载页面,现在您应该在左侧看到一个标题为status的菜单和可能的值。

enter image description here

答案 1 :(得分:0)

您是否在属性status上添加了一个方面? 语法query.filters = "status:new"仅适用于方面。

有关更多示例,请参阅此处:https://www.algolia.com/doc/guides/searching/faceting/#faceting-overview