Опция 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, это лучший способ получить быстрый поиск:)