使用 Algolia PHP API 获取构面列表

Get list of facets with Algolia PHP API

我需要使用 Algolia PHP API 从索引中获取所有方面的列表,但似乎找不到支持此 kind of query 的方法。

当前的 Algolia PHP API 这可能吗?

所以,基本上是突出显示单词的列表:

选项 1

鉴于您正在使用 PHP,因此处于后端,您可以使用以下内容:

$settings = $index->getSettings();

然后您将在 $settings['attributesForFaceting'] 中获得构面。

为了能够调用 getSettings,您需要使用设置了 settings ACL 的 API 密钥初始化您的 API 客户端。
因此,要么使用您的管理员 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 这样的搜索引擎被设计为 相关 同时速度快,而不是数据库被设计为 详尽 在快速的同时。因此,当一个索引太大而无法在一定时间内达到 "browsed" 时,Algolia 将超时并发回它得到的结果(注意。这是事情发生的基本观点)。

选项 3

我没有你项目的详细信息,但你调查过 instantsearch.js 了吗?
这是用于构建 Algolia 搜索体验的 go-to 库(或其变体之一)。在 front-end 上完成的所有事情,直接调用他们的 API 服务器,这是获得快速搜索体验的最佳方式:)