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 -> 服务器 -> 浏览器