1 回答
TA贡献1829条经验 获得超4个赞
选项1
鉴于您使用的是PHP,因此属于后端,您可以使用以下代码:
$settings = $index->getSettings();
然后,您可以了解各个方面$settings['attributesForFaceting']。
为了能够调用,getSettings您需要使用已设置settingsACL的API密钥初始化API客户端。
因此,可以使用Admin API密钥或为此在仪表板中创建的特定密钥。
选项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服务器在前端完成所有操作,这是获得快速搜索体验的最佳方法:)
- 1 回答
- 0 关注
- 201 浏览
添加回答
举报