为了账号安全,请及时绑定邮箱和手机立即绑定

使用Algolia PHP API获取构面列表

使用Algolia PHP API获取构面列表

PHP
一只萌萌小番薯 2021-05-13 18:23:47
我需要使用Algolia PHP API从索引中获取所有方面的列表,但似乎找不到支持这种查询的方法。当前的Algolia PHP API是否可以实现?因此,基本上是突出显示的单词的列表:
查看完整描述

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服务器在前端完成所有操作,这是获得快速搜索体验的最佳方法:)


查看完整回答
反对 回复 2021-05-28
  • 1 回答
  • 0 关注
  • 201 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信