php yii2 搜索功能,yii2使用xunsearch搜索功能
如何安装 Xunsearch
我只说一个大概,详情请参照官方文档。
首先要安装 Xunsearch,安装命令如下:wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
tar -jxvf xunsearch-full-latest.tar.bz2
cd xunsearch-full-1.4.9 # 注意此处的文件夹名,可能有不一样
sh ./setup.sh安装完记得要启动 xunsearch 服务程序,示例如下(安装完之后会提示你如何启动):你的安装目录/xunsearch/bin/xs-ctl.sh start
Yii2 如何使用 Xunsearch
首先要在配置文件 frontend/config/main.php 添加 xunsearch 组件:'components' => [
...
'xunsearch' => [
'class' => 'hightman\xunsearch\Connection', // 此行必须
'iniDirectory' => '@common/config', // 搜索 ini 文件目录,默认:@vendor/hightman/xunsearch/app
'charset' => 'utf-8', // 指定项目使用的默认编码,默认即时 utf-8,可不指定
],
...
],
在 common/config 目录下添加 xunsearch 配置文件 search.ini, 下面是 yii2cmf 配置:project.name = yii2cmf
project.default_charset = utf-8
server.index = 8383
server.search = 8384
[id]
type = id
[title]
type = title
[content]
type = body
[status]
index = self
tokenizer = full
[published_at]
type = numeric
新建一个 Model 文件,yii2cmf 的 Model 是 common/models/Search.php 里面的代码就跟写 Yii2 一样的:<?php
namespace common\models;
use yii\data\ActiveDataProvider;
class Search extends \hightman\xunsearch\ActiveRecord
{
public function search($keyword)
{
$query = self::find()->where($keyword)->andWhere(['status' => 1]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => [
'published_at' => SORT_DESC,
]
]
]);
return $dataProvider;
}
}
添加新文章的时候实现自动入库
创建XsBehavior并绑定到ArticleData模型里<?php
namespace common\behaviors;
use common\models\Article;
use common\models\Search;
use yii\base\Behavior;
use yii\db\ActiveRecord;
class XsBehavior extends Behavior
{
public function events()
{
return [
ActiveRecord::EVENT_AFTER_INSERT => [$this, 'afterSaveInternal'],
ActiveRecord::EVENT_AFTER_UPDATE => [$this, 'afterSaveInternal']
];
}
public function afterSaveInternal($event)
{
$article = Article::findOne(['id' => $event->sender->id]);
if (!empty($article)) {
if ($event->name == 'afterInsert') {
$search = new Search();
$search->id = $event->sender->id;
} else {
$search = Search::findOne($event->sender->id);
}
$search->status = $article->status;
$search->title = $article->title;
$search->content = $event->sender->content;
$search->published_at = $article->published_at;
$search->save();
}
}
}
剩下的就是搜索的实现了,更详情代码请参照 yii2cmf 源码
如何导入以前的数据到 Xunsearch
下面是 yii2cmf 导入数据的具体实现(记得数据库用户名和密码,库名要改成自己的):php vendor/hightman/xunsearch/util/Indexer.php --source=mysql://root:root@localhost/yii --sql="SELECT a.id,a.title,d.content,a.status,a.published_at FROM pop_article a INNER JOIN pop_article_data d ON d.id=a.id" --project=common/config/search.ini
查看 Xunsearch 搜索当前导入的词库
在 yii2cmf 根目录运行:php vendor/hightman/xunsearch/util/Quest.php -p common/config/search.ini 'keyword'
最后,源码默认不开启xunsearch搜索,如果要开启,需要自己安装xunsearch服务端,然后修改.env里SEARCH_ENGINE为xunsearch
php yii2 搜索功能,yii2使用xunsearch搜索功能相关推荐
- php yii2 搜索功能,Yii2.0全站搜索功能上线
本搜索自豪的采用 迅搜,对 Yii 支持非常友好,详情参照官方提供的 Xunsearch SDK for PHP.目前只支持帖子标题和内容搜索. 如何安装 Xunsearch 我只说一个大概,详情请参 ...
- 一个多功能蓝色漂亮的搜索条
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- uniapp 如何给搜索框设值_uni-app搜索功能前后端开发(页面)
uni-app搜索功能前后端开发(页面) 博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 借助的插件地址 展示 前端是使用vue, ...
- win7计算机搜索功能没有了,win7搜索功能不能用了怎么办|win7搜索功能不见了怎么解决? - 学无忧...
在Win7中搜索功能相对于WinXP来讲使用越来越方便,随便打开一个文件夹,点击右上角的"搜索"文本框,输入自己需要搜索的内容就可以进行文件搜索了,但最近有网友提到win7搜索功能 ...
- 今日头条搜索站长平台(入口)功能简介
今日头条搜索站长平台(入口)功能简介 今日头条搜索站长平台已正式上线,对于需要流量的网站管理员来说,可以通过今日头条搜索站长平台来了解网站的收录.站点数据.资源等等. 头条搜索站长平台地址: http ...
- 织梦++高级搜索php,织梦多条件筛选功能实现(dede联动搜索) - DeDecms
织梦多条件筛选功能实现(dede联动搜索) 用织梦实现筛选的功能,其实主要就是运用到了织梦的高级搜索功能,然后用ajax去post替换掉本来的结果就可以了. 其实筛选的话,主要有两个问题需要解决,一个 ...
- Android实现搜索功能并本地保存搜索历史记录
本案例实现起来很简单,所以可以直接拿来嵌入项目中使用,涉及到的知识点: - 数据库的增删改查操作 - ListView和ScrollView的嵌套冲突解决 - 监听软键盘回车按钮设置为搜索按钮 ...
- Android 类似淘宝 电商 搜索功能,监听软键盘搜索事件,延迟自动搜索,以及时间排序的搜索历史记录的实现
最近跳槽去新公司,接受的第一个任务是在 一个电商模块的搜索功能以及搜索历史记录的实现. 需求和淘宝等电商的功能大体差不多,最上面一个搜索框,下面显示搜索历史记录.在EditText里输入要搜索的关键字 ...
- python实现浏览器ctrl+f页面搜索功能_JS 页面内容搜索,类似于 Ctrl+F功能的实现代码...
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码 更新时间:2007年08月13日 19:58:11 作者: WinWebMail 帮 助 查看:[大字 中字 小字] 登录系统时的增强安全 ...
最新文章
- 高并发场景下数据库的常见问题及解决方案
- 14种轻量级网络综述 — 主干网络篇
- 简述一下生成对抗网络GAN(Generative adversarial nets)模型?
- 日期格式不符合要求:Unparseable date: quot;3e8a4d83533744c698216535a65850c0quot;
- 如何在github上发起一个pull request
- 仅用38天 2021年快递业务量已超100亿件
- Xtreme Report为windows开发者提供一个完善的类似于Outlook 2003报表的风格
- 基于nvidia的ffmpeg编解码加速
- 专利写作技巧以及流程
- MATAL角度弧度互换
- N95滤材之父:滤材才是关键!道翰天琼认知智能机器人平台API接口大脑为您揭秘。
- Holt_Winters三次平滑指数实现
- 计算机考研就业率,这8个考研专业,就业率一直居高不下,报了就是赚了!
- 灾难-NAS服务器用的西数红盘报警处理
- tesseract-ocr .NET 识别图片中文字
- 线性回归 原理及公式推导
- 怎样快速解决EDIUS中文件无法打开问题
- 腾讯云服务器被窃取,用来攻击其他服务器,已解决
- 2021-2027全球与中国便携式超高清摄像头市场现状及未来发展趋势
- 解决Android10和Android11创建文件失败问题