PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

为你的问答系统轻松集成xunsearch模糊搜索

管理员 2024-12-14
Fastadmin
8

下面不废话直接上干货。
抵一步安装 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修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部