gpt4 book ai didi

php - laravel 侦察兵 : How to update index in controller

转载 作者:搜寻专家 更新时间:2023-10-31 21:48:55 25 4
gpt4 key购买 nike

这是我的问题。我想更新保存在 Controller 存储中的侦察员索引。有什么想法吗?

我正在使用 tntsearch包裹。我知道我可以在命令提示符下使用 $ php artisan scout:import App\\Models\\Paper

执行 artisan 命令

但是我正在开发一个网站,每个人都可以在其中提交他们的期刊,我的网站需要一个强大的搜索引擎。所以在这种情况下,我需要在每次提交期刊时更新索引。以便每个人都可以搜索期刊。

我设法通过创建提供程序 TNTSearchScoutServiceProvider 来完成此任务的一部分。

这里是 TNTSearchScoutServiceProvider:

class TNTSearchScoutServiceProvider extends \TeamTNT\Scout\TNTSearchScoutServiceProvider
{
public function boot()
{
$this->app[EngineManager::class]->extend('tntsearch', function ($app) {
$tnt = new TNTSearch();

$driver = config('database.default');
$config = config('scout.tntsearch') + config("database.connections.{$driver}");

$tnt->loadConfig($config);
$tnt->setDatabaseHandle(app('db')->connection()->getPdo());

$this->setFuzziness($tnt);
$this->setAsYouType($tnt);

return new TNTSearchEngine($tnt);
});


// To allow us run commands if we're not running in the console
$this->commands([
ImportCommand::class,
]);
}
}

将此提供程序添加到 config/app.php 之后。在 Controller 中,我使用这样的提供程序:

Artisan::call('tntsearch:import', ['model' => 'App\Models\Paper']);

但这会引发此错误:

unlink(C:\wamp64\www\mywbsite\storage/papers.index): Resource temporarily unavailable

这是我目前完成的:虽然它会抛出错误,但我只能在搜索结果中获取最后更新的行,而最旧的行不会显示在搜索结果中。

那么你有什么建议呢?这是更好的方法吗?或者我应该每天检查该站点并运行 artisan 命令以便为表编制索引?

最佳答案

我终于设法解决了这个问题:

要更新存储中的索引,您只需从 TNTindexer 类创建一个新对象;首先,您创建该索引,然后使用 query() 方法选择要更新的列。然后运行()索引器。在此之前确保加载配置。这是我在 Controller 中编写的方法:

   protected function add_to_search(){

$indexer = new TNTIndexer;

$driver = config('database.default');
$config = config('scout.tntsearch') + config("database.connections.{$driver}");

$indexer->loadConfig($config);

$indexer->createIndex('paper.index');
$indexer->query('SELECT id,title,description,abstract,keywords FROM papers;');
$indexer->run();
}

这样索引总是通过 Controller 更新。

关于php - laravel 侦察兵 : How to update index in controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com