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

Javascript 使用Algolia,如何将urlSync创建的查询字符串传递到php客户端?,javascript,php,search,algolia,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"

使用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);

但这样做会引发一个错误,即传递的参数中存在意外属性。

不幸的是,使用Algolia客户端在后端确实不可能重用即时搜索URL。我想你问这个是为了搜索引擎优化,这是一个绝对有效的观点

目前唯一可行的语言是JavaScript。 实际上,此逻辑可以从instantsearch.js的底层库中提取:

用于获取状态 创建一个 使用将其状态设置为以前检索到的状态 最后,使用未记录且很快被弃用的 实际上,您可以在前端添加该逻辑,对该查询进行URL编码,并在后端解码的自定义参数中设置它。这很难看,但它可以工作,但可能不适合最大URI长度


在前端,您不必经历从URL提取状态并将状态设置为新的帮助程序的过程,您只需使用search.helper-其中search是您的instantsearch.js实例。

不幸的是,使用Algolia客户端确实不可能在后端重用即时搜索URL。我想你问这个是为了搜索引擎优化,这是一个绝对有效的观点

目前唯一可行的语言是JavaScript。 实际上,此逻辑可以从instantsearch.js的底层库中提取:

用于获取状态 创建一个 使用将其状态设置为以前检索到的状态 最后,使用未记录且很快被弃用的 实际上,您可以在前端添加该逻辑,对该查询进行URL编码,并在后端解码的自定义参数中设置它。这很难看,但它可以工作,但可能不适合最大URI长度


在前端,您不必经历从URL提取状态并将状态设置为新帮助程序的过程,您只需使用search.helper-其中search是您的instantsearch.js实例。

感谢您的解释。是的,目标是搜索引擎优化;我希望在js准备好之前提供一个缓存结果。如果syncUrl使用的名称能够与过滤器参数兼容就太好了,而且这些参数在所有客户端都是一致的,可能它们已经是了,到目前为止,我只使用了js和PHP。但这只是一个建议。现在,我将把传递的URL参数映射到PHP,我们可以很好地控制我们将接收的内容,并让js在服务器上运行,因为这太过分了。再次感谢!这绝对是一个好建议,目前正在内部讨论。由于这方面的任何变化可能不会在几个月前发生,因此此解决方案可能是目前可用的最佳解决方案。但显然,我们正在尽最大努力统一所有受支持平台的体验:谢谢你的解释。是的,目标是搜索引擎优化;我希望在js准备好之前提供一个缓存结果。如果syncUrl使用的名称能够与过滤器参数兼容就太好了,而且这些参数在所有客户端都是一致的,可能它们已经是了,到目前为止,我只使用了js和PHP。但这只是一个建议。现在,我将把传递的URL参数映射到PHP,我们可以很好地控制我们将接收的内容,并让js在服务器上运行,因为这太过分了。再次感谢!这绝对是一个好建议,目前正在内部讨论。由于这方面的任何变化可能不会在几个月前发生,因此此解决方案可能是目前可用的最佳解决方案。但显然,我们正在尽最大努力统一所有受支持平台的体验: