我正在使用Algolia搜索的迷你网站,我想搜索模型'项目'中的项目(表示表名'项')。这是我在Controller中的代码:
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
我可以有任何方法进行配置吗?
答案 0 :(得分:2)
seq.Date
在Algolia中定义您的索引名称。此时,您在st <- as.Date("20140101", "%Y%m%d")
en <- as.Date("20170101", "%Y%m%d")
quarters <- seq.Date(from = st, to = en, "quarter")
readable <- format(quarters, as.character("%Y-%m"))
zeitbereich = c()
for(i in 1:(length(readable)-1)) {
zeitbereich = c(zeitbereich, readable[i], "", "")
}
zeitbereich = c(zeitbereich, readable[length(readable)])
索引中导入了数据,并且您正在searchableAs
中进行搜索。这就是你得到这个错误的原因。
您需要删除items
覆盖或重新导入数据。
关于未更新的数据,可能是:
如果您运行posts_index
,它将更新Algolia。如果您执行searchableAs
,则需要链接$item->update()
方法。
https://laravel.com/docs/5.5/scout#updating-records
答案 1 :(得分:0)
配置模型索引
每个Eloquent模型与给定的搜索“index”同步,该索引包含该模型的所有可搜索记录。换句话说,您可以将每个索引视为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”并尝试