有了Algolia,如何将urlSync创建的查询字符串传递到php客户端?

Jas*_*nis 1 javascript php search algolia

使用Algolia InstantSearch js库和PHP客户端,我希望将InstantSearch urlSync创建的查询字符串传递给PHP库的搜索方法.有没有一种方便的方法来执行此操作,或者我是否必须将查询字符串转换为库自己期望的参数?

例如,我有字符串:

?q=&hPP=1000&idx=myindex&p=0&dFR%5Bcolor%5D%5B0%5D=orange&is_v=1

理想情况下我想

$client = new \AlgoliaSearch\Client("x", "x");
$index = $client->initIndex($_GET['idx']);
parse_str($_SERVER['QUERY_STRING'], $params);
$res = $index->search('', $params);
Run Code Online (Sandbox Code Playgroud)

但这样做会抛出一个错误,即传递的参数中存在意外的属性.

Jer*_*ska 5

不幸的是,使用Algolia客户端在后端重用即时搜索URL确实是不可能的.我会假设你要求这个用于搜索引擎优化目的,这是一个绝对有效的观点.

目前唯一可行的语言是JavaScript.实际上,这个逻辑可以从以下的基础库中提取出来 instantsearch.js:algoliasearch-helper-js.

您实际上可以在前端添加此逻辑,对此查询进行URL编码,并将其设置为您在后端解码的自定义参数.这很丑陋但它可以工作(虽然它可能不适合最大URI长度).

在前端,您不必经历从URL中提取状态并将状态设置为新助手的过程,您可以简单地使用search.helper- search您的instantsearch.js实例在哪里.