2017-10-19 45 views
0

我在与Algolia搜索一个小型的网站,我想在示范“项目”(指一个表名“项目”)来搜索项目。这是我在控制器代码:如何配置模型指数Algolia搜索Laravel

public function search(Request $request) { 
    $query = $request->only(['query']); 

    $items = Item::search($query['query'])->paginate(12); 
    $total = $items->count(); 

    return view('shop.search', [ 
     'items'  => $items, 
     'total'  => $total, 
    ]); 
} 

我能够搜索后运行下面的代码:

php artisan scout:import "App\Item" 

,然后,它做工精细。但是当我插入一个新物品时,我无法搜索那个新物品。我曾尝试这个代码来配置 “索引”(我认为它可以帮助),但它始终显示错误:(

public function searchableAs() 
{ 
    return 'posts_index'; 
} 

和错误是:

Index posts_index does not exist 

indexName is not valid 

我可以有任何方法来配置它吗?

回答

1

searchableAs定义您在Algolia的索引名称。此时,您进口数据在items指数,并且是在posts_index搜索。这就是为什么你会得到这个错误。 你需要或者删除searchableAs覆盖或重新导入数据。

关于没有被更新的数据,这可能是因为:

  • 您正在使用的队列
  • 你没有雄辩

更新数据如果运行$item->update()它将更新Algolia 。如果你这样做Item::update(['title' => 'new title']),你将需要链searchable()方法。 https://laravel.com/docs/5.5/scout#updating-records

+0

谢谢,我会再次尝试; d –

0

配置型号指标

每个雄辩模型同步与给定的搜索“指数”,它包含了所有的该型号的搜索记录。换句话说,你可以把每个索引想象成一个MySQL表。默认情况下,每个模型将被持久化为与模型的典型“表”名称匹配的索引。通常,这是模型名称的复数形式;然而,您可以自由通过重写searchableAs方法对模型定制模型的指数:

<?php 

     namespace App; 

     use Laravel\Scout\Searchable; 
     use Illuminate\Database\Eloquent\Model; 

     class Post extends Model 
     { 
       use Searchable; 

       /** 
       * Get the index name for the model. 
       * 
       * @return string 
       */ 
       public function searchableAs() 
       { 
         return 'posts_index'; 
       } 
} 

Algolia新的索引创建“posts_index”,并尝试