Algolia 通过调用 Laravel 端点自动完成
Algolia Autocomplete by calling Laravel endpoint
是否可以使用 Laravel 端点作为 Algolia 自动完成索引?
Laravel 方:
Route::get('/search',function(){
$query = request(q);
return App\Contacts::search($query)->where('company_id',2)->raw();
}
前端
var index = 'http://laravel.app/search';
$('#contacts').autocomplete({ hint: false }, [
{
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5 }),
displayKey: 'name',
templates: {
dropdownMenu: '#my-custom-menu-template',
footer: '<div class="branding">Powered by <img src="https://www.algolia.com/static_assets/images/press/downloads/algolia-logo-light.svg" /></div>',
suggestion: function(suggestion) {
return suggestion._highlightResult.iata.value + ' '+ suggestion._highlightResult.name.value ;
}
}
}
]);
在不知道 Algolias API 的情况下,我会使用 Curl 或 Guzzle 向那里发送 GET 请求(或任何他们想要的)API,根据自动完成 JS 的期望转换响应并将其推回前端。
我认为在 autocomplete.js 中更改端点并不容易。需要修改库。
请问你为什么要这样做?不建议调用后端,最好直接调用 Algolia。在后端使用 Algolia 的主要原因是为了快速集成它,而不是使用像 autocomplete.js 或 InstantSearch.js 这样的前端库。既然你愿意使用它们,你应该直接调用 Algolia。它将节省大量网络延迟并卸载您的服务器。
每次有人搜索时,查询将是:
浏览器 -> Algolia -> 浏览器
而不是
浏览器 -> 服务器 -> Algolia -> 服务器 -> 浏览器
是否可以使用 Laravel 端点作为 Algolia 自动完成索引?
Laravel 方:
Route::get('/search',function(){
$query = request(q);
return App\Contacts::search($query)->where('company_id',2)->raw();
}
前端
var index = 'http://laravel.app/search';
$('#contacts').autocomplete({ hint: false }, [
{
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5 }),
displayKey: 'name',
templates: {
dropdownMenu: '#my-custom-menu-template',
footer: '<div class="branding">Powered by <img src="https://www.algolia.com/static_assets/images/press/downloads/algolia-logo-light.svg" /></div>',
suggestion: function(suggestion) {
return suggestion._highlightResult.iata.value + ' '+ suggestion._highlightResult.name.value ;
}
}
}
]);
在不知道 Algolias API 的情况下,我会使用 Curl 或 Guzzle 向那里发送 GET 请求(或任何他们想要的)API,根据自动完成 JS 的期望转换响应并将其推回前端。
我认为在 autocomplete.js 中更改端点并不容易。需要修改库。
请问你为什么要这样做?不建议调用后端,最好直接调用 Algolia。在后端使用 Algolia 的主要原因是为了快速集成它,而不是使用像 autocomplete.js 或 InstantSearch.js 这样的前端库。既然你愿意使用它们,你应该直接调用 Algolia。它将节省大量网络延迟并卸载您的服务器。
每次有人搜索时,查询将是:
浏览器 -> Algolia -> 浏览器
而不是
浏览器 -> 服务器 -> Algolia -> 服务器 -> 浏览器