如何在模型中为 Algolia 搜索配置索引 Laravel
How to configure index in model for Algolia search Laravel
我有一个带有 Algolia 搜索的迷你网站,我想搜索模型 'Item' 中的项目(表示 table 名称 'item')。这是我在控制器中的代码:
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"
然后,它工作正常。但是当我插入一个新项目时,我无法搜索那个新项目。我已经尝试使用此代码来配置 "Index"(我认为它可以提供帮助)但它总是显示错误 :(
public function searchableAs()
{
return 'posts_index';
}
错误是:
Index posts_index does not exist
或
indexName is not valid
有什么办法可以配置吗?
searchableAs
定义您在 Algolia 中的索引名称。此时,您在 items
索引中导入了数据,并且正在 posts_index
中进行搜索。这就是您收到此错误的原因。
您需要删除 searchableAs
覆盖或重新导入数据。
关于未更新的数据,可能是:
- 您正在使用队列
- 您正在更新数据 Eloquent
如果您 运行 $item->update()
它将更新 Algolia。如果你这样做 Item::update(['title' => 'new title'])
,你将需要链接 searchable()
方法。
https://laravel.com/docs/5.5/scout#updating-records
配置模型索引
每个 Eloquent 模型都与给定的搜索同步 "index",其中包含该模型的所有可搜索记录。换句话说,您可以将每个索引想象成 MySQL table。默认情况下,每个模型都将保存到与模型的典型 "table" 名称匹配的索引中。通常,这是型号名称的复数形式;但是,您可以通过覆盖模型上的 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" 并尝试
我有一个带有 Algolia 搜索的迷你网站,我想搜索模型 'Item' 中的项目(表示 table 名称 'item')。这是我在控制器中的代码:
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"
然后,它工作正常。但是当我插入一个新项目时,我无法搜索那个新项目。我已经尝试使用此代码来配置 "Index"(我认为它可以提供帮助)但它总是显示错误 :(
public function searchableAs()
{
return 'posts_index';
}
错误是:
Index posts_index does not exist
或
indexName is not valid
有什么办法可以配置吗?
searchableAs
定义您在 Algolia 中的索引名称。此时,您在 items
索引中导入了数据,并且正在 posts_index
中进行搜索。这就是您收到此错误的原因。
您需要删除 searchableAs
覆盖或重新导入数据。
关于未更新的数据,可能是:
- 您正在使用队列
- 您正在更新数据 Eloquent
如果您 运行 $item->update()
它将更新 Algolia。如果你这样做 Item::update(['title' => 'new title'])
,你将需要链接 searchable()
方法。
https://laravel.com/docs/5.5/scout#updating-records
配置模型索引
每个 Eloquent 模型都与给定的搜索同步 "index",其中包含该模型的所有可搜索记录。换句话说,您可以将每个索引想象成 MySQL table。默认情况下,每个模型都将保存到与模型的典型 "table" 名称匹配的索引中。通常,这是型号名称的复数形式;但是,您可以通过覆盖模型上的 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" 并尝试