2017-10-19 84 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」,並嘗試