如果您有 2 个不同的搜索栏用于 2 个不同的索引,如何配置 Algolia InstantSearch class?
How to configure the Algolia InstantSearch class if you have 2 different search bars for 2 distinct indexes?
我正在使用 Algolia
中的 InstantSearch
,它基本上是您配置并绑定到搜索栏(小部件)的单例。
问题是在他们的演示中,InstantSearch
class 是一个 Singleton
,因此不能多次实例化。但是,它可以配置多次,但随后会更改整个应用程序的配置。
InstantSearch.shared.configure(
appID: algoliaAppID,
apiKey: key,
index: algoliaUserIndex
)
他们提供的一个解决方案是多索引搜索,但它是索引的聚合,而在我的情况下,我只想进行不同的孤立搜索。
多指标参考:
let searcherIds = [SearcherId(index: algoliaUserIndex),
SearcherId(index: algoliaMessageSessionsIndex)]
InstantSearch.shared.configure(appID: algoliaAppID,
apiKey: key,
searcherIds: searcherIds)
所以,我的问题是:
如何让两个不同的搜索栏分别搜索不同的索引?
通过查看他们的 code 您可以通过提供必填字段使用他们方便的 init 方法获得另一个 InstantSearch 实例。以下是他们提供的四种初始化方法:
/// Create a new InstantSearch reference with the given configurations.
///
/// - parameter appID: the Algolia AppID.
/// - parameter apiKey: the Algolia ApiKey.
/// - parameter index: the name of the index.
@objc public convenience init(appID: String, apiKey: String, index: String) {
self.init()
self.configure(appID: appID, apiKey: apiKey, index: index)
}
/// Create a new InstantSearch reference.
///
/// - parameter searcher: the `Searcher` used by InstantSearch
@objc public convenience init(searcher: Searcher) {
self.init()
configure(searcher: searcher)
}
// Multi-Index init
/// Create a new InstantSearch reference with the given configurations.
///
/// - parameter appID: the Algolia AppID.
/// - parameter apiKey: the Algolia ApiKey.
/// - parameter indexIds: the identifications for each index
@objc public convenience init(appID: String, apiKey: String, searcherIds: [SearcherId]) {
self.init()
self.configure(appID: appID, apiKey: apiKey, searcherIds: searcherIds)
}
/// Create a new InstantSearch reference with the given configurations.
///
/// - parameter searchables: an array of searchables
/// - parameter searchersIds: an array of searcherId that identifies a specific index
@objc public convenience init(searchables: [Searchable], searcherIds: [SearcherId]) {
self.init()
self.configure(searchables: searchables, searcherIds: searcherIds)
}
现在由您决定是要为一个视图控制器还是为整个应用程序创建实例
我正在使用 Algolia
中的 InstantSearch
,它基本上是您配置并绑定到搜索栏(小部件)的单例。
问题是在他们的演示中,InstantSearch
class 是一个 Singleton
,因此不能多次实例化。但是,它可以配置多次,但随后会更改整个应用程序的配置。
InstantSearch.shared.configure(
appID: algoliaAppID,
apiKey: key,
index: algoliaUserIndex
)
他们提供的一个解决方案是多索引搜索,但它是索引的聚合,而在我的情况下,我只想进行不同的孤立搜索。
多指标参考:
let searcherIds = [SearcherId(index: algoliaUserIndex),
SearcherId(index: algoliaMessageSessionsIndex)]
InstantSearch.shared.configure(appID: algoliaAppID,
apiKey: key,
searcherIds: searcherIds)
所以,我的问题是: 如何让两个不同的搜索栏分别搜索不同的索引?
通过查看他们的 code 您可以通过提供必填字段使用他们方便的 init 方法获得另一个 InstantSearch 实例。以下是他们提供的四种初始化方法:
/// Create a new InstantSearch reference with the given configurations.
///
/// - parameter appID: the Algolia AppID.
/// - parameter apiKey: the Algolia ApiKey.
/// - parameter index: the name of the index.
@objc public convenience init(appID: String, apiKey: String, index: String) {
self.init()
self.configure(appID: appID, apiKey: apiKey, index: index)
}
/// Create a new InstantSearch reference.
///
/// - parameter searcher: the `Searcher` used by InstantSearch
@objc public convenience init(searcher: Searcher) {
self.init()
configure(searcher: searcher)
}
// Multi-Index init
/// Create a new InstantSearch reference with the given configurations.
///
/// - parameter appID: the Algolia AppID.
/// - parameter apiKey: the Algolia ApiKey.
/// - parameter indexIds: the identifications for each index
@objc public convenience init(appID: String, apiKey: String, searcherIds: [SearcherId]) {
self.init()
self.configure(appID: appID, apiKey: apiKey, searcherIds: searcherIds)
}
/// Create a new InstantSearch reference with the given configurations.
///
/// - parameter searchables: an array of searchables
/// - parameter searchersIds: an array of searcherId that identifies a specific index
@objc public convenience init(searchables: [Searchable], searcherIds: [SearcherId]) {
self.init()
self.configure(searchables: searchables, searcherIds: searcherIds)
}
现在由您决定是要为一个视图控制器还是为整个应用程序创建实例