使用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);
但这样做会抛出一个错误,即传递的参数中存在意外的属性。
答案 0 :(得分:5)
不幸的是,使用Algolia客户端确实无法在后端重复使用即时搜索网址。我会假设你要求这个用于SEO目的,这是一个绝对有效的观点。
目前唯一可行的语言是JavaScript。
实际上,这个逻辑可以从instantsearch.js
:algoliasearch-helper-js
的基础库中提取。
getStateFromQueryString
获取州setState
getQuery
method 您实际上可以在前端添加此逻辑,对此查询进行URL编码,并将其设置为您在后端解码的自定义参数。这很丑陋但它可以工作(虽然它可能不适合最大URI长度)。
在前端,您不必经历从URL中提取状态并将状态设置为新助手的过程,您只需使用search.helper
- 其中{{ 1}}是您的search
实例。