使用 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 服务器,这是获得快速搜索体验的最佳方式:)
我需要使用 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 服务器,这是获得快速搜索体验的最佳方式:)