|-转 【坑,勿用】Yii的yii-xunsearch扩展,支持中文的搜索引擎,支持全文索引全文搜索
太差了,Yii的yii-xunsearch扩展,支持中文的搜索引擎,支持全文索引全文搜索,注意有分Yii-1.x 用法,Yii-2.x 用法 ,推荐用Yii2或者更高的版本做项目。
支持Yii1和Yii2 20200406
https://www.yiiframework.com/extension/yii-xunsearch
yii-xunsearch
xunsearch php sdk, yii1 extension and yii2 ActiveRecord support
Composer 支持ResourcesComposer 支持
自 v1.4.9 起,通过 subtree 功能将 xs-sdk-php 分离成为一个只读的子仓库, 以支持通过composer安装。我们的包名称为hightman/xunsearch
,内含全部 PHP-SDK 的库文件,还包括支持 Yii 的扩展类。
安装
和绝大多数 composer 一样,你可以通过以下两种方法中的任意一种安装。
可以直接运行
composer require --prefer-dist hightman/xunsearch "*@beta"
或者将以下内容添加到您的项目根目录composer.json
中的require
章节, 然后运行composer install
"hightman/xunsearch": "*@beta"
Tip:如果您打算用代码仓库中的最新版本,请将星号改为 dev-master。
命令行工具
vendor/bin/xs help
Yii-1.x 用法
这是对 xunsearch 的一个简单封装,使之更适合 yii-1.x 的用法习惯。首先, 在应用入口文件最开头引入 composer 的 autoload 文件,通常是 index.php。
require_once 'vendor/autoload.php';
// 如有必要请定义常量 XS_APP_ROOT 表示项目文件存放路径
//define ('XS_APP_ROOT', dirname(__FILE__) . '/protected/data');
在应用配置文件的compnents
中添加以下代码,通常是 protected/config/main.php
// application components
'components' => array(
// ... other components ...
'search' => array(
'class' => 'EXunSearch',
'project' => 'demo', // 搜索项目名称或对应的 ini 文件路径
'charset' => 'utf-8', // 您当前使用的字符集(索引、搜索结果)
),
),
然后就可以通过Yii::app()->search
来访问EXunSearch
对象,进行索引管理或检索。
添加、修改索引数据,使用方法参照XSIndex。 对于 ActiveRecord 对象来讲,建议在相关的afterSave
和afterDelete
中进行索引同步。
$data = array('pid' => 1234, 'subject' => '标题', 'message' => '内容');
Yii::app()->search->add($data); // 添加文档
Yii::app()->search->update($data); // 更新文档
Yii::app()->search->del('1234'); // 删除文档
使用检索功能时,可以将Yii::app()->search
当作XSSearch对象一样直接使用它的全部方法。
Yii::app()->search->setQuery('subject:标题');
$docs = Yii::app()->search->setLimit(5, 10)->search(); // 取得搜索结果文档集
Yii-2.x 用法
在 yii2 中,除了提供类似 yii-1.x 的调用方式外,我们还支持 ActiveRecord 方式来操作。首先, 请在应用配置文件的components
中添加以下代码,通常是config/web.php
...