尝试使用 facets algolia 进行过滤时遇到问题

问题描述

因此,我的目标是仅能够以用户身份查看匹配学校 ID 的匹配结果中的事件。我正在通读 algolia 文档,而 facet 和 filter 这两个词完全搞砸了我的大脑,只是想看看我是否能得到一些明确的指导,说明我该走哪条路来实现我的目标。

所以我在我的 algolia 仪表板上显示了我的自定义方面,这很棒,它显示了哪些记录属于哪个学校 ID。

algolia dash

现在我想要做的是当用户进入搜索栏并开始输入时,它只显示学校 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...