我有一个"记录"像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中获得这样的查询。你需要"启用"在仪表板的某个地方进行这种查询?
如果我禁用过滤器,我会得到所有记录(如预期的那样),但过滤不会返回任何结果,也不会出现错误。
非常感谢任何帮助。
答案 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
的菜单和可能的值。
答案 1 :(得分:0)
您是否在属性status
上添加了一个方面?
语法query.filters = "status:new"
仅适用于方面。
有关更多示例,请参阅此处:https://www.algolia.com/doc/guides/searching/faceting/#faceting-overview