Laravel Scout检查索引是否存在

w51jfk4q  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(184)

我找不到有关如何使用Laravel Scout检查索引是否存在的文档。
我用它来搜索。我的模特有可搜索的特性。
这是我希望访问索引和检查搜索结果的方式:

$tasks = Task::search(
  query: trim($query) ?? '',
)->take(self::NUMBER_OF_SEARCHRESULTS_PER_MODEL)->get();

我得到的是“没有找到MeiliSearch \ Exceptions \ ApiException索引tasks”。
另一个奇怪的行为是,尽管我之前执行了scout:import "App\Models\Task",它告诉我所有记录都已经导入,但如果DB中没有记录,meilisearch不会创建索引。
因此,上面的代码会导致异常。
我现在想做的是防止这种情况的发生,就像这样:

$tasksScoutBuilder = Task::search(
  query: trim($query) ?? '',
);

$tasks = ($tasksScoutBuilder->indexExists()) ? $tasksScoutBuilder->take(self::NUMBER_OF_SEARCHRESULTS_PER_MODEL)->get() : collect();

如何检查模型的索引是否存在?

x4shl7ld

x4shl7ld1#

在配置www.example.com之前,您可以model.you覆盖模型上的searchableAs方法,如果索引不存在,Laravel将抛出异常,如index_not_found_exception,例如

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

相关问题