使用 Algolia,如何将 urlSync 创建的查询字符串传递到 php 客户端?
With Algolia, how to pass the query string created by urlSync into the php client?
使用 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。我假设您是出于 SEO 目的而提出此问题,这绝对是正确的观点。
目前唯一可行的语言是 JavaScript。
事实上,这个逻辑可以从 instantsearch.js
的底层库中提取:algoliasearch-helper-js
.
- 使用
getStateFromQueryString
获取状态
- 创建 new helper instance
- 使用
setState
将其状态设置为之前检索到的状态
- 最后,使用未记录(并很快弃用)
getQuery
method
您实际上可以在前端添加此逻辑,URL-对该查询进行编码并将其设置在您将在后端解码的自定义参数中。这很难看,但它可以工作(尽管它可能不适合最大 URI 长度)。
在前端,你不必经历从 URL 中提取状态并将状态设置为新助手的过程,你可以简单地使用 search.helper
- 其中 search
是您的 instantsearch.js
实例。
使用 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。我假设您是出于 SEO 目的而提出此问题,这绝对是正确的观点。
目前唯一可行的语言是 JavaScript。
事实上,这个逻辑可以从 instantsearch.js
的底层库中提取:algoliasearch-helper-js
.
- 使用
getStateFromQueryString
获取状态 - 创建 new helper instance
- 使用
setState
将其状态设置为之前检索到的状态
- 最后,使用未记录(并很快弃用)
getQuery
method
您实际上可以在前端添加此逻辑,URL-对该查询进行编码并将其设置在您将在后端解码的自定义参数中。这很难看,但它可以工作(尽管它可能不适合最大 URI 长度)。
在前端,你不必经历从 URL 中提取状态并将状态设置为新助手的过程,你可以简单地使用 search.helper
- 其中 search
是您的 instantsearch.js
实例。