Получить список аспектов с Algolia PHP API - PullRequest
0 голосов
/ 03 мая 2019

Мне нужно получить список всех аспектов из индекса с API-интерфейсом Algolia PHP, но, похоже, не могу найти метод, который поддерживает этот тип запроса .

Возможно ли это с текущим API Algolia PHP?

Итак, в основном список выделенных слов:

enter image description here

1 Ответ

1 голос
/ 07 мая 2019

Опция 1

Учитывая, что вы используете PHP и, таким образом, находитесь на стороне сервера, вы можете использовать следующее:

$settings = $index->getSettings();

Затем вы получаете фасеты $settings['attributesForFaceting'].

Чтобы вызвать getSettings, вам нужно инициализировать свой клиент API с помощью ключа API, для которого установлен settings ACL.
Поэтому используйте либо ключ API администратора, либоспециальный ключ, который вы создаете в своей инструментальной панели для этой цели.

Опция 2

Если в вашем API-ключе задано значение setting ACL, это обычно не подходит для приложения поиска по интерфейсу.

Так что для реализации внешнего интерфейса (что, очевидно, не ваш случай) функция search - это то, что вам нужно;можно предоставить пустую строку поиска, и вы можете настроить запрос, чтобы улучшить время и размер ответа:

$response = $index->search('', [
  'attributesToRetrieve' => ['objectID'], // don't retrieve full objects
  'hitsPerPage' => 0, // send back an empty page of results anyway
  'facets' => '*' // ask for all facets,
  'responseFields' => 'facets' // limit JSON response to `facets`
]);

Как только вы получите ответ на этот запрос, вы получите список аспектов с:

$facets = array_keys($response['facets']);

Обратите внимание на один предостережение этого метода: если ваш индекс довольно большой, тогда ответ может содержать не все значения фасетов.
Причина этого заключается в том, чтопоисковая система, такая как Algolia, разработана так, чтобы быть релевантной , будучи быстрой, в отличие от баз данных, которые разработаны как исчерпывающие , будучи быстрыми.В результате, когда индекс слишком велик для «просмотра» в течение определенного периода времени, Algolia тайм-аут и отправит обратно полученные результаты (NB. Это базовый взгляд на то, как все происходит).

Вариант 3

У меня нет сведений о вашем проекте, но вы изучили instantsearch.js ?
Это библиотека lib (или одна изего варианты) построить поисковый опыт с Алголией.Все, что делается во внешнем интерфейсе, с прямыми вызовами к их серверам API, это лучший способ получить быстрый поиск:)

...