简述什么是搜索引擎优化(服务带载能力太弱/delete/update/scout时间)

优采云 发布时间: 2021-12-19 10:03

  简述什么是搜索引擎优化(服务带载能力太弱/delete/update/scout时间)

  介绍

  对于数据库查询,主键和索引通常是加快搜索速度的强大工具。对于文本搜索、模糊搜索、全文搜索,虽然MySQL的MyISAM引擎支持,但性能往往达不到生产要求,或者服务负载能力太弱。

  

  我们需要一个专用的文本搜索引擎并连接到 Laravel 应用程序。这就是本文提到的Scout。

  编码时间

  Laravel scout 是一个独立的包和类库,可以通过 composer 方便地访问系统,并与 Eloquent Model 配合使用。

  官方 scout 内置了 Algolia 和 Elasticsearch 驱动程序,但社区也提供了其他选项。如果是默认值,则 Algolia 是首选。

  Laravel 5.3 及以上将scout库引入系统:

  composer require laravel/scout

复制代码

  然后在 config/app.php 文件中的提供者中添加以下内容:

  'providers' => [

Laravel\Scout\ScoutServiceProvider::class,

]

复制代码

  如果要使用配置文件来设置 scout,则发布配置文件:

  php artisan vendor:publish

复制代码

  这将生成 config/scout.php 文件。然后我们引入algolia的sdk库文件,供程序中使用:

  composer require algolia/algoliasearch-client-php

复制代码

  如果要在模型中引入搜索服务,只需要在模型文件中引入即可

  use Laravel\Scout\Searchable;

复制代码

  在模型中手动实现,那些属性和字段是可以搜索到的,只需要实现 toSearchableArray() 方法即可。然后实现 searchableAs() 并返回一个字符串,用于指定索引的模型名称。

  默认情况下,scout 订阅模型的创建/删除/更新时间。这些写操作的数据会触发索引的更新、删除索引、创建索引。该方法可以是同步的,也可以放在队列中进行异步处理。

  通过索引搜索,scout在查询方式上几乎和eloquent模型一样。例如:

  Review::search('Lious')->get();

复制代码

  或链式呼叫分页:

  Review::search('Lious')->paginate(20);

复制代码

  由于search方法返回Query Builder对象,查询条件和集合方法可以链式调用。例如过滤查询结果集:

  Review::search('Lious')->where('account_id', 2)->get();

复制代码

  你在模型中使用的方法在这里都适用。

  对于某些数据,你可能不想建立索引并放到搜索引擎中,那么你只需要在模型中显式声明如下:

  批量创建10条数据,无需索引。

  要手动控制搜索引擎的某些输入以构建索引数据,您可以在链中调用 searchable() 方法:

  Review::all()->searchable();

复制代码

  或者通过关联关系,将关联模型的数据写入搜索引擎:

  $user->reviews()->searchable();

复制代码

  某些搜索数据未编入索引:

  Review::where('actived', false)->unsearchable();

复制代码

  无效条目不会添加到索引中,从而节省空间。

  如果你的数据库已经产生了大量的数据,或者在测试阶段,你想手动将所有的定义数据导入到搜索引擎中,你可以在命令行上这样做:

  php artisan scout:import App\\Review

复制代码

  写在最后

  本文介绍了laravel scout 索引类的方法,给大家展示如何引入搜索引擎,以及如何在程序中精细控制索引数据。全文检索在现代web应用中对于高并发有一套很好的场景,值得深入研究和研究。

  快乐编码:-)

  我是@。我继续分享编程知识。欢迎关注。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线