Как настроить класс Algolia InstantSearch, если у вас есть 2 разные панели поиска для 2 разных индексов? - PullRequest
0 голосов
/ 25 июня 2019

Я использую InstantSearch из Algolia, и это в основном Singleton, который вы настраиваете и привязываете к панели поиска (виджету). Проблема в том, что в их демонстрации класс InstantSearch является 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)

Итак, мой вопрос: Как я могу иметь два разных бара поиска, каждый из которых ищет свой индекс?

1 Ответ

0 голосов
/ 25 июня 2019

Посмотрев на их код Вы можете создать другой экземпляр InstantSearch, используя их удобный метод init, указав необходимые поля.ниже приведены четыре метода инициализации, которые они предоставляют:

/// 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)
}

Теперь вам решать, хотите ли вы создать экземпляр для одного контроллера представления или для всего приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...