php - 使用 Algolia PHP API 获取 facets 列表
问题描述
我需要使用 Algolia PHP API 从索引中获取所有方面的列表,但似乎找不到支持这种查询的方法。
当前的 Algolia PHP API 可以做到这一点吗?
所以,基本上是突出显示的单词列表:
解决方案
选项1
鉴于您使用的是 PHP,因此处于后端,您可以使用以下内容:
$settings = $index->getSettings();
然后,您将切面放入$settings['attributesForFaceting']
.
为了能够调用,您需要使用设置了 ACLgetSettings
的 API 密钥来初始化您的 API 客户端。
因此,要么使用您的 Admin API 密钥,要么使用您在仪表板中为此目的创建的特定密钥。settings
选项 2
在setting
您的 API 密钥上设置 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 将超时并发回它获得的结果(注意,这是事情如何发生的基本视图)。
选项 3
我没有您项目的详细信息,但是您是否查看了instantsearch.js?
这是使用 Algolia 构建搜索体验的首选库(或其变体之一)。一切都在前端完成,直接调用他们的 API 服务器,这是获得快速搜索体验的最佳方式 :)
推荐阅读
- git - Git:避免 IDE 配置文件在远程服务器上运行
- android - 服务在 Kotlin 多平台应用程序中不起作用
- docker - 如何在 Github Action 中运行缓存的 Docker 镜像?
- python - 为什么在我导入 discord.py 时它总是给我一个错误?
- javascript - Form.append() 不坚持新的创造价值
- activemq - ActiveMQ 消息似乎从一个代理中出列,但未到达代理网络中的另一个
- prestashop - Prestashop multishop:如何无索引别名子域
- angular11 - dxi-Item 在按钮单击事件上禁用/启用
- javascript - 将道具(数组)传递到路由器链接路径
- python - Python Telepot bot 内联键盘