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

时间:2017-03-09 14:00:17

标签: 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);

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

1 个答案:

答案 0 :(得分:5)

不幸的是,使用Algolia客户端确实无法在后端重复使用即时搜索网址。我会假设你要求这个用于SEO目的,这是一个绝对有效的观点。

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

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

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