Algolia通过调用Laravel端点自动完成

时间:2018-01-15 17:23:13

标签: php laravel laravel-5 algolia

是否可以使用Laravel Endpoint作为Algolia Autocomplete索引?

Laravel Side:

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 ;
                }
            }
        }
    ]);

2 个答案:

答案 0 :(得分:4)

我认为在autocomplete.js中更改端点是不容易的。它需要修改库。

我可以问你为什么要这样做吗?不建议打电话给你的后端,最好直接打电话给Algolia。在后端使用Algolia的主要原因是快速集成它,而不是使用autocomplete.js或InstantSearch.js等前端库。既然你愿意使用它们,你应该直接打电话给Algolia。它将节省大量的网络延迟并卸载您的服务器。

每次有人搜索时,查询都将是:

浏览器 - &gt; Algolia - &gt;浏览器

而不是

浏览器 - &gt;服务器 - &gt; Algolia - &gt;服务器 - &gt;浏览器

答案 1 :(得分:0)

在不知道Algolias API的情况下,我会使用Curl或Guzzle向那里的API发送一个GET请求(或者他们想要的任何东西),根据自动完成JS期望的内容转换响应并将其推回到前端。 / p>