Как выполнить несколько запросов по разным индексам при использовании настраиваемого searchClient для angular-instantsearch при запросе внутреннего сервера - PullRequest
0 голосов
/ 24 сентября 2018

Я использую Java-клиент Angular-InstantSearch и Algolia. Мне не удалось найти документ по Angular-InstantSearch о том, как сделать Multi Queries другим индексом.Мне удается сделать это хорошо на моем бэк-энде в Java, с другим заданным параметром поиска.

То, что я сейчас нашел, - это какой-то документ на сайте instantserach.js.Для создания нескольких запросов: - Несколько экземпляров InstantSearch, синхронизированных с индексом Main (проблема в Instantsearch.js. Я не могу переопределить SearchClient для получения root-прав на свой бэкэнд вместо серверов algolia) - В angular-Instantsearch я могу переопределить searchClient,но не знаю, как добавить несколько экземпляров InstantSearch.

Что я хотел бы сделать:
-Либо сделать пользовательский AIS-InstantSearch, который обрабатывает несколько запросов (несколько индексов) -Или службы промежуточного программного обеспечения, которые берут мойсписок индексов + запрос, затем запросить мой сервер и, наконец, отправить результат в мой пользовательский компонент Hits.-Или еще что-то, если у вас есть другая идея.

Это мой фактический конфиг ais-instantsearch, использующий мой бэкэнд-сервер (который работает нормально) и consitencyService, чтобы управлять, когда показывать или не отображать результаты в моем обращении.составная часть.Проблема в том, что даже если я отправляю несколько результатов, мой результат занимает только 1 набор результатов.

  this.searchConfig = {
      indexName:  'locations',
      searchFunction: (helper) => {
          if (helper.state.query === '') {
              return;
          }
          helper.search();
      },
      searchClient : {
          search : (requests : SearchRequest[]): Promise<{results: SearchResponse[]}> => {
              if (this.indices instanceof Array) {
                  this.indices = this.indices.join(',');
              }
              let query;
              if ( this.consistencyService !== undefined && this.consistencyService !== null) {
                query = this.consistencyService.query;
              }
              return this.http.post<SearchResponse[]>(
                  `${SERVER_API_URL}api/algolia/search/${this.indices}`
                  , JSON.stringify(query === undefined ? {requests} : {query: query})
                  , {headers: {'Content-type': 'application/json'}}).map(response => {return {results: response}}).toPromise();
          }}
  };

Спасибо за ваше время, надеюсь, кто-то может помочь.

...