问题描述
因此,我的目标是仅能够以用户身份查看匹配学校 ID 的匹配结果中的事件。我正在通读 algolia 文档,而 facet 和 filter 这两个词完全搞砸了我的大脑,只是想看看我是否能得到一些明确的指导,说明我该走哪条路来实现我的目标。
所以我在我的 algolia 仪表板上显示了我的自定义方面,这很棒,它显示了哪些记录属于哪个学校 ID。
现在我想要做的是当用户进入搜索栏并开始输入时,它只显示学校 ID 与当前用户学校 ID 匹配的记录。
我有这段代码,在 updatingSearchResults()
方法调用中...
func updateSearchResults(for searchController: UISearchController) {
let searchBar = searchController.searchBar
let settings = Settings()
.set(\.searchableAttributes,to: [.default("eventName")])
.set(\.attributesForFaceting,to: [.default("schoolID")])
.set(\.attributesToRetrieve,to: ["eventName"])
.set(\.attributesToRetrieve,to: ["eventDate"])
.set(\.attributesToRetrieve,to: ["eventCost"])
.set(\.attributesToRetrieve,to: ["forEventGrades"])
try index2.setSettings(settings,completion: { (result) in
if case .success(let response) = result {
print("Success saving settings!")
}
})
getTheSchoolsID { (schoolID) in
if let id = schoolID {
let query = Query(searchBar.searchTextField.text!)
.set(\.filters,to: "schoolID: \(id)")
do {
try index2.searchForFacetValues(of: "schoolID",matching: id,applicableFor: query )
} catch {
print("There was an error searching for facet values.")
}
}
}
}
所以为了解释一些变量,index2基本上只是另一个索引,我想我重新声明它会出错,所以我只是添加了一个2,getSchoolID()
闭包中的id是学校ID一个 String
,以便我可以在 matching:
方法的 searchForFacetValues()
参数中输入它。
现在,当我运行该应用程序时,我只在控制台中收到错误消息,并且无法在搜索栏中执行所需的功能,无法显示某个 schoolID 的记录。我尝试了大约 5 种不同的方法,但我似乎无法完全理解文档,所以如果有人能解释我做错了什么并提供帮助,那就太好了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)