下面不废话直接上干货。
抵一步安装 xunsearch 这个相当简单我就不重复了,看官网 官网安装文档
第二步安装phpSDK
composer require --prefer-dist hightman/xunsearch "*@beta"
安装完成启动xunsearch服务还是看文档吧,下面说一下如何使用
首先在我们的插件ask的目录下创建项目的配置文件 question.ini
内容如下
question.ini
project.name = questionproject.default_charset = utf-8server.index = 8383server.search = 8384[id]type = id[content]type = body[title]type = title
创建好配置文件 修改一下 问答的model文件 addons/ask/model/question.php
具体修改内容如下
question.php init方法中 self::afterInsert 添加如下代码
$xs = new XS(ADDON_PATH.'/ask/question.ini'); $index = $xs->index; // 索引对象来自 XS 的属性 $data = array( 'id' => $row['id'], // 此字段为主键,必须指定 'title' => $row['title'], 'content' => $row['content'], ); // 创建文档对象 $doc = new XSDocument; $doc->setFields($data); // 添加到索引数据库中 $index->add($doc);
question.php init self::afterUpdate 添加如下代码
$xs = new XS(ADDON_PATH.'/ask/question.ini'); $index = $xs->index; // 索引对象来自 XS 的属性 $data = array( 'id' => $row['id'], // 此字段为主键,必须指定 'title' => $row['title'], 'content' => $row['content'], ); // 创建文档对象 $doc = new XSDocument; $doc->setFields($data); // 添加到索引数据库中 $index->update($doc);
question.php getIndexQuestionList 方法替换关于keyword的部分
/*$arr = array_filter(explode(' ', $keyword)); foreach ($arr as $index => $item) { $query->where('title', 'like', "%{$item}%"); }*/ $keyword = mb_substr($keyword,0,60); $xs = new XS(ADDON_PATH.'/ask/question.ini'); $search = $xs->search; // 获取 搜索对象 $search->setFuzzy();//开启模糊搜索 $search->setQuery($keyword); // 设置搜索语句 $search->setLimit(1000); // 设置返回结果最多为 10 $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中 $ids = []; foreach ( $docs as $doc ) { $ids[] = $doc->id; } if($ids){ $query->where('id','in',$ids); }
修改完这些我们就可以测试一下了,首先发表一个提问,然后模糊搜索一下试试吧
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。