本搜索自豪的采用 迅搜,对 Yii 支持非常友好,详情参照官方提供的 Xunsearch SDK for PHP。目前只支持帖子标题和内容搜索。

如何安装 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 服务程序,示例如下(安装完之后会提示你如何启动):

/home/vagrant/xunsearch/bin/xs-ctl.sh start

Yii2 如何使用 Xunsearch

首先要在配置文件frontend/config/main.php添加 xunsearch 组件:

'components' => [

...

'xunsearch' => [

'class' => 'hightman\xunsearch\Connection', // 此行必须

'iniDirectory' => '@frontend/config', // 搜索 ini 文件目录,默认:@vendor/hightman/xunsearch/app

'charset' => 'utf-8', // 指定项目使用的默认编码,默认即时 utf-8,可不指定

],

...

],

在frontend/config目录下添加 xunsearch 配置文件search.ini, 下面是 GetYii 的配置:

project.name = getyii

project.default_charset = utf-8

server.index = 8383

server.search = 8384

[topic_id]

type = id

[title]

type = title

[content]

type = body

[status]

index = self

tokenizer = full

[updated_at]

type = numeric

新建一个 Model 文件,GetYii 的 Model 是common/models/Search.php里面的代码就跟写 Yii2 一样的:

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, 2]]);

$dataProvider = new ActiveDataProvider([

'query' => $query,

'sort' => [

'defaultOrder' => [

'updated_at' => SORT_DESC,

]

]

]);

return $dataProvider;

}

}

添加新贴子的时候实现自动入库

在 Model 里面用 afterSave 来实现自动更新和插入

public function afterSave($insert)

{

if ($insert) {

$search = new Search();

$search->topic_id = $this->id;

$search->status = self::STATUS_ACTIVE;

} else {

$search = Search::findOne($this->id);

$search->status = $this->status;

}

$search->title = $this->title;

$search->content = $this->content;

$search->updated_at = $this->updated_at;

$search->save();

}

剩下的就是搜索的实现了,更详情代码请参照 GetYii 源码 - 添加xunsearch 搜索基本功能

如何导入以前的数据到 Xunsearch

下面是 GetYii 导入数据的具体实现(记得数据库用户名和密码改要改成自己的):

vendor/hightman/xunsearch/util/Indexer.php --source=mysql://root:[email protected]/getyii --sql="SELECT id AS topic_id,title,content,status,updated_at FROM post" --project=frontend/config/search.ini

查看 Xunsearch 搜索当前导入的词库

在 GetYii 根目录运行:

vendor/hightman/xunsearch/util/Quest.php -p frontend/config/search.ini 'xx'

php yii2 搜索功能,Yii2.0全站搜索功能上线相关推荐

  1. phpcmsv9mysql扩展_PHPCMS v9 教程:全站搜索

    PHPCMS v9 全站搜索管理 一.全站搜索模块管理介绍 注意:全文检索模块需要mysql开启全文索引功能,开启方法:修改mysql配置文件:window服务器为my.ini,linux服务器为my ...

  2. php必应收录查询api,必应 Web 搜索 API v7.0

    原标题:必应 Web 搜索 API v7.0 必应搜索v7.0 官方提供文档是php5.6x因此调整一下代码 function getbing($url,$key) { $ch = curl_init ...

  3. 百度搜索结果的URL参数 搜索历史记录(rsv_sug)

    介绍完了和相关搜索 f=1 有关的4个百度网页搜索参数原先查询字符串(oq), 相关提示位置(rsp), 相关搜索_语义关联性(rs_src), 上下页切换(rsv_ers),接下来是讲解与搜索框提示 ...

  4. phpcmsV9 全站搜索功能如何实现

    给大家分享一下如何运用搜索功能吧, 1. 首先, 模块->全站搜索->添加搜索分类,添加搜索分类,此时生成的ID为typeid 2. 添加form表单,此时的typeid即为上图的id,s ...

  5. 百度静态网站全站搜索功能

    最近在百度发现一个静态网站全站搜索的功能,记录下来备用 站内还能能百度. <SCRIPT language=javascript> function g(formname) { var u ...

  6. PMCAFF | 锤子科技产品经理朱萧木介绍 Smartisan OS 2.0 语音搜索功能

    在锤子科技 他的工号是0001 他是罗永浩招聘的第一位员工 他31岁 个头高挑 蓄着马尾 像个艺术家 他是锤子科技的产品总监 他叫朱萧木 朱萧木介绍 Smartisan OS 2.0 语音搜索功能 昨 ...

  7. mSystems:苏晓泉、徐健等发布全球微生物组结构和功能搜索平台2.0

    Microbiome Search Engine 2 第二代微生物组搜索引擎:全球微生物组结构和功能搜索的平台 Microbiome Search Engine 2: a Platform for T ...

  8. Android 10.0 Settings 搜索功能屏蔽某个app

    在开发Settings中由于要屏蔽到某些app 不让搜索出这个app,所以就要从搜索流程中来去掉查询到这个app,而搜索流程都是在SettingsIntelligence中完成的 搜索流程: Sett ...

  9. 一个多功能蓝色漂亮的搜索条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

最新文章

  1. 【设计模式系列】结构型模式之Proxy模式
  2. python作用域-Python之函数作用域
  3. Metasploit Framework(MSF)的使用
  4. Codeforces 864E Fire(背包DP)
  5. Oracle执行计划解释
  6. (王道408考研操作系统)第二章进程管理-第四节3:死锁处理策略之检测和解除
  7. kafka启动命令_Kafka入门
  8. 程序员:“我放弃了年薪 20 万的 Offer” 你知道为什么吗?
  9. 7-3 DAG图优化-A (15 分)(更新版)
  10. 我得到 http 响应,但 response.getEntity().getContent() 显示空指针异常
  11. 如何做好一个技术 TL
  12. 二、vue组件化开发(轻松入门vue)
  13. 移动安全-APP安全加固
  14. 最小二乘法理解与应用
  15. 当年校招时,我就死在这个问题上...
  16. Eclipse的JVM语言Xtend达到2.3 M7
  17. 用QQbot实现图灵机器人
  18. JAVA练习题:求水仙花数
  19. JavaSE进阶 第七章 常用类 (一) String
  20. android监听服务,服务监听打电话

热门文章

  1. keil uvision5开发C51相关的笔记
  2. VMware虚拟机中Ubuntu忘记密码的解决办法
  3. WPF ComboBox 多选下拉框
  4. 文件高阶操作复制查找处理目录树打包文件shutil
  5. 超级产品:半导体之父,56岁创业,如今年利润能买下1.6个华为
  6. AJAX RSS 阅读器
  7. 飞桨升级 创新引领!发布飞桨最新技术成果及产业实践,共话AI创新引领新征途...
  8. linux卸载mongodb服务,linux上mongodb的安装与卸载
  9. 2019牛客暑期多校训练营(第一场) Integration(定积分)
  10. 机器学习PS参数服务器——分布式计算是个什么鬼?