当前位置: 首页 > news >正文

PHP:集成Xunsearch生成前端搜索骨架

如果是安装宝塔,我们在集成xunsearch的时候就会比较简单,后面我们在介绍其他的接入方式;

首先我们进入到宝塔管理后台:【软件商店】-【输入xun】-【点击xunsearch】直接安装即可

安装成功之后,会自动在www/server中创建xunsearch 

我们将 【sdk】 -【php】 复制到你的站点extend下

然后再站点根目录下创建test.php进行测试,在进行测试前我们需要创建配置【非常关键】

        a):如果需要做精确搜索建议对字段设定index=self,tokenizer = full,不然xunsearch会对字段做分词处理;

        b):数字区间搜索需设定 type=numerice;

        c):如需对字段进行模糊匹配tokenizer 可不设定,默认做scws分词,如字段存储的值为“,6,7,8,”想搜索包含6或8的数据;

        d):配置文件必须包含一个type=id的主键字段

接下来我们就开始配置:

如果我们不知道如何手写,官方也提供了生成ini的工具,具体可以参考手册

项目配置详解 - 权威指南 - 迅搜(xunsearch) - 开源免费中文全文搜索引擎

ini文件设计辅助工具 - 迅搜(xunsearch) - 开源免费中文全文搜索引擎

demo.ini【xunsearch/app/demo.ini


project.name = demo
project.default_charset = utf-8
server.index = 8383
server.search = 8384[pid]
type = id[subject]
type = title[message]
type = body[chrono]
type = numeric

test.php 【站点根目录


<?php
// // 确保Xunsearch扩展已经安装并启用require_once 'extend/xunsearch/lib/XS.php';// // 初始化Xunsearch的项目
$xs = new XS('demo'); $data = array('pid' => 234, // 此字段为主键,必须指定'subject' => '5554444','message' => '测试文档的内容部分','chrono' => time(),
);// 创建文档对象$doc = new XSDocument;
$doc->setFields($data);
$index = $xs->index;
// 添加到索引数据库中
$index->add($doc);
$index->flushIndex();
echo "<br>";
echo "数据已成功添加到Xunsearch索引" . "\n";
$search = $xs->search;$result =  $xs->search->setQuery($where)//->setSort('sku_id','asc') #按索引排序->setDocOrder(true) #按添加索引排序(升序)->setLimit($limit)->search();
try {// 遍历结果foreach ($result as $document) {echo "<br>";// 打印文档的某些字段echo $document->pid . ' - ' . $document->subject .  ' - ' .  $document->message ."\n";}} catch (\XSException $e) {$result = $e->getMessage();}// 其他操作,如更新索引、优化索引等
?>

当然如果想针对查询词进行分词可以对其使用 XSTokenizerScws  

测试结果:

如有疑问可以致邮 dingcho@kingbal.com 我们,一起探讨 

测试成功,说明集成成功,我们可以执行命令自动生成前端搜索页面骨架

/www/wwwroot/www.tst.com/extend/xunsearch/util/SearchSkel.php demo /www/wwwroot/www.tst.com/xunsearch

生成完毕,访问页面即可 

参考生成搜索代码文档:SearchSkel 生成搜索代码 - 权威指南 - 迅搜(xunsearch) - 开源免费中文全文搜索引擎

相关文章:

  • 关于智慧校园安全用电监测系统的设计
  • Docker搭建FRP内网穿透服务器
  • flume-ng-sql | 支持JDK8+ | 支持Flume 1.11.0 | 使用 Kotlin 编写
  • 07-操作元素(键盘和鼠标事件)
  • 下载安装nvm,使用nvm管理node.js版本
  • Kotlin 函数式接口
  • Leetcode:无重复字符的最长子串
  • 数据结构-堆排序问题
  • Android 按上/下键,焦点会移动到第一个控件上面或最后一个控件下面的解决办法
  • VirtualBox7.x下载安装CentOS7安装网络配置
  • AI盒子在智慧加油站的应用
  • 数据结构学习笔记
  • 代码随想录算法训练营第36期DAY45
  • 自然语言处理中的BERT模型深度剖析
  • 基于 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
  • 【翻译】babel对TC39装饰器草案的实现
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 2017-08-04 前端日报
  • C++入门教程(10):for 语句
  • emacs初体验
  • Java方法详解
  • java小心机(3)| 浅析finalize()
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • orm2 中文文档 3.1 模型属性
  • Python3爬取英雄联盟英雄皮肤大图
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 不上全站https的网站你们就等着被恶心死吧
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 排序算法学习笔记
  • 算法-图和图算法
  • 小李飞刀:SQL题目刷起来!
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 中文输入法与React文本输入框的问题与解决方案
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # wps必须要登录激活才能使用吗?
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (11)MSP430F5529 定时器B
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (LeetCode) T14. Longest Common Prefix
  • (办公)springboot配置aop处理请求.
  • (编译到47%失败)to be deleted
  • (二)fiber的基本认识
  • (二)linux使用docker容器运行mysql
  • (二十六)Java 数据结构
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (规划)24届春招和25届暑假实习路线准备规划
  • (每日一问)基础知识:堆与栈的区别