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) - 开源免费中文全文搜索引擎