quanzo/yii2-indexer

索引内容网站和搜索。适用于 Yii 2 的模块

1.0.0 2019-08-24 20:30 UTC

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

安装和连接

  1. 将其复制到模块文件夹中,并连接 autoload.php
  2. 或者使用 composer:在项目的 require 部分添加 "quanzo/yii2-indexer": "*"composer require "quanzo/yii2-indexer"
  3. 安装迁移中的表结构
  4. 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)

将保存的页面标记为过时。