quanzo / yii2-indexer
索引内容网站和搜索。适用于 Yii 2 的模块
Requires
- php: >=7.0
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2024-09-25 08:08:32 UTC
README
该模块用于将生成的内容保存到数据库中以供进一步搜索。
通过 POST 获取的页面将被忽略。
必须通过参数 exclude 指定不应进入数据库的地址。
使用 Mysql 全文搜索
保存时,url 的格式为 路径/到/action?参数,例如 site/default/index?param=1
安装和连接
- 将其复制到模块文件夹中,并连接 autoload.php
- 或者使用 composer:在项目的 require 部分添加
"quanzo/yii2-indexer": "*"或composer require "quanzo/yii2-indexer" - 安装迁移中的表结构
- 在 config.php 中连接
$config = [
'bootstrap' => [
'indexer',
],
'modules' => [
'indexer' => [
'class' => 'x51\yii2\modules\indexer\Module',
/*
'fullpageMode' => false, // сохранять всю страницу или только контент (без layout)
'ttl' => 86400, // время жизни содержимого в БД, в сек.
'exclude' => [], // роуты в которых запрещено использование. Можно применять символы ? и *
'layoutRule' => '*/layouts/*', // маска для определения layout
'saveOrigContent' => true, // сохранять в БД html
'saveOrigTitle' => true, // сохранять в БД оригинал заголовока страницы
'defaultPageSize' => 15, // размер страницы поиска по умолчанию
'enableHashtags' => true, // обработка хештегов на страницах. они становятся ссылками на поиск
'notShowOld' => false, // не показывать старые записи в поиске
'on '.\x51\yii2\modules\indexer\Module::EVENT_BEFORE_INDEX => function ($event) {}, // событие перед сохранением страницы в БД
'on '.\x51\yii2\modules\indexer\Module::EVENT_BEFORE_SEARCH => function ($event) {}, // событие перед началом поиска
*/
],
], // end modules
];
使用
搜索页面地址: http://site.domain/index.php?r=indexer
事件
EVENT_BEFORE_INDEX
事件 \x51\yii2\modules\indexer\Module::EVENT_BEFORE_INDEX 在保存结果到数据库之前被调用。
处理程序接收类型为 x51\yii2\modules\indexer\events\BeforeIndexEvent 的对象。
如果对象中设置参数 isValid=false,则不会保存数据。
事件对象中还提供了以下参数
-
module - 模块对象的链接
-
model - 准备保存的模型。这个模型将被保存。可以在保存之前更改数据。
EVENT_BEFORE_SEARCH
事件 \x51\yii2\modules\indexer\Module::EVENT_BEFORE_SEARCH 在开始搜索之前被调用。
处理程序接收类型为 x51\yii2\modules\indexer\events\BeforeSearchEvent 的对象。
事件对象中提供了以下数据
-
module - 模块对象的链接
-
origSearchStr - 原始搜索字符串
-
preparedSearchStr - 将用于搜索的字符串
EVENT_START_RFRESH_INDEX
事件 \x51\yii2\modules\indexer\Module::EVENT_START_REFRESH_INDEX 在开始更新数据库中的页面之前启动。
事件对象中提供了以下数据
- module - 当前模块的链接
- url - 页面地址
- title - 页面的原始标题(未用于搜索处理)
- content - 原始内容(未用于搜索处理)
- isValid - true/false - 允许/禁止更新
可以修改事件对象中的数据 - 这些数据将被用于更新。例如,可以删除不应该存在的内容(在搜索中多余)。
模块方法
function search($text, $perpage = false, $page = 1, &$count = false)
执行搜索。
如果设置 $perpage,则进行分页输出。
$count 返回找到的记录总数。
function actualUrl($url)
从数据库中保存的 url 形成当前的 url。
public function getIndex($url)
根据 url 返回保存的记录
public function markOld($url)
将保存的页面标记为过时。