QQ扫一扫联系
「搜索中心」是一个提供全站通用的内容搜索中心
搜索中心提供了为网站提供了一个通用搜索的功能,使用时,其他模块将可搜索的内容主动推送到本模块,可以实现全站搜索的功能。
功能列表
多模块支持
搜索引擎
MySQL(默认)
ElasticSearch(安装 SuperSearchES 模块)
其他(待支持)
① 在模块中继承并实现实现 SearchCenterBiz
use \Module\SearchCenter\Biz\SearchCenterBiz;
use \Module\SearchCenter\Biz\AbstractSearchCenterBiz;
class XxxSearchCenterBiz extends AbstractSearchCenterBiz
{
const NAME = 'xxx';
public function name()
{
return self::NAME;
}
public function title()
{
return '模块需要搜索的内容';
}
public function syncBatch($nextId)
{
$batch = ModelUtil::batch('xxx', $nextId, 10);
$batch['records'] = array_map(function ($o) {
return [
'biz' => self::NAME,
'bizId' => $o['id'],
'url' => modstart_web_url('xxx/' . $o['id']),
'title' => $o['title'],
'content' => $o['content'],
'keywords' => [],
];
}, $batch['records']);
return $batch;
}
}
② 注册搜索中心业务
<?php
class ModuleServiceProvider extends ServiceProvider
{
// ...
public function boot(Dispatcher $events)
{
// 注册搜索中心业务
SearchCenterBiz::register(XxxSearchCenterBiz::class);
}
// ...
}
③ 同步搜索内容到搜索中心
可以通过后台手动同步:
后台 → 内容管理 → 索引构建(右上角)→ 全量同步。
也可以在模块开发过程中,在数据变动的地方通过代码自动同步:
use \Module\SearchCenter\Biz\SearchCenterBiz;
// 增加/更新内容
SearchCenterBiz::update('xxx',1,'/xxx/1','标题','内容',['关键词','关键词']);
// 删除内容
SearchCenterBiz::delete('xxx',1);
④ 在搜索界面搜索结果
访问 /search_center
界面,输入关键词搜索。
默认情况下会搜索同步的 title、content、keywords 字段。