官网网址http://www.xunsearch.com

官方安装手册地址:http://www.xunsearch.com/doc/php/guide/start.installation
wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
tar -xjf xunsearch-full-latest.tar.bz2
cd xunsearch-full-1.4.11/
sh setup.sh##根据提示安装

以下为安装成功界面

+=================================================+
| Installation completed successfully, Thanks you |

安装成功,感谢选择和使用 xunsearch
说明和注意事项:
1. 开启/重新开启 xunsearch 服务程序,命令如下:
/usr/local/xunsearch/bin/xs-ctl.sh restart
强烈建议将此命令写入服务器开机脚本中
2. 所有的索引数据将被保存在下面这个目录中:
/usr/local/xunsearch/data
如需要转移到其它目录,请使用软链接。
3. 您现在就可以在我们提供的开发包(SDK)基础上
开发您自己的搜索了。
目前只支持 PHP 语言,参见下面文档:
/usr/local/xunsearch/sdk/php/README

+=================================================+

启动

##启动
/usr/local/xunsearch/bin/xs-ctl.sh start
INFO: starting server[xs-indexd] ... (BIND:127.0.0.1:8383)
INFO: starting server[xs-searchd] ... (BIND:127.0.0.1:8384)

运行条件

##检测 PHP-SDK 的运行条件
/usr/local/xunsearch/sdk/php/util/RequiredCheck.php

Xunsearch PHP-SDK 运行需求检查

检查内容

本程序用于确认您的服务器配置是否能满足运行 Xunsearch PHP-SDK 的要求。
它将检查服务器所运行的 PHP 版本,查看是否安装了合适的PHP扩展模块,以及
确认 php.ini 文件是否正确设置。

项目结果用于备注
PHP 版本7.0.6XS(core)PHP 5.2.0 或更高版本是必须的。
SPL 扩展OKXS(core)SPL 扩展用于自动加载和对象戏法
PCRE 扩展OKXSDocument, XSSearch用于字符串切割、判断
编码转换mbstringXSDocument, XSSearch用于支持非 UTF-8 字符集
缓存模块WARNINGXS用于缓存项目配置文件的解析结果
JSON 扩展OKutil.Quest, util.Indexer用于读取或输出 JSON 格式的数据
XML 扩展OKutil.Indexer用于读取导入 XML 格式的数据
MySQL 扩展mysqliutil.Indexer用于读取导入 MySQL 的数据库
SQLite 扩sqlite3util.Indexer用于读取导入 SQLite 的数据库

检查结果

共计 8 项通过,1 项警告,0 项错误。

您的服务器配置符合 Xunsearch/PHP-SDK 的最低要求。
如果您需要使用特定的功能,请关注上述的 WARNING 项。

配置

##配置 以BLOG为例
cd /usr/local/xunsearch/sdk/php/app
cp demo.ini blog.ini

配置文件生成工具http://www.xunsearch.com/tools/iniconfig

vim blog.ini

project.name = blog
project.default_charset = utf-8
server.index = 8383
server.search = 8384

[id]
type = id

[subject]

type = title

[message]
type = body

[chrono]

type = numeric

[title]
type = title
[c_id]
type=numeric
[is_top]
type=numeric
[password]
type=string
~

##导入数据源
/usr/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://用户:密码@localhost/库名 --sql="SELECT id,title,c_id,message FROM thinkask_blog where status=1" --project=blog
##xunSearch 有接口导入,具体查看文档http://www.xunsearch.com/doc/php/guide/index.add

定时导入

crontab -e  
0 3 * * *    /usr/local/shell/xunSearch.sh  
crontab -l  


#xunSearch.sh:
#!/bin/bash  
/usr/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://用户:密码@localhost/库名 --sql="SELECT id,title,c_id,message FROM thinkask_blog where status=1" --project=blog > /dev/null 2>&1  

PHP封装使用

##PHP封装使用

/**

  • [xunSearch xunSearch处理]
  • @Author Jerry
  • @DateTime 2018-05-30T11:34:04+0800
  • @Example eg:
  • @return [type] [description]
    */

function xunSearch($keyword,$index='blog'){

if(!$keyword) return;
require_once '/usr/local/xunsearch/sdk/php/lib/XS.php';
$xs = new \XS($index);    // demo  为项目名称,配置文件是:$sdk/app/demo.in i
// $index = $xs->index;   //  获取索引对象
$search = $xs->search;   //  获取搜索对象
$search->setLimit(20); 
$docs = $search->setQuery()->search($keyword);
$info = [];
foreach ($docs as  $doc) {
        $info[$doc->id]['title'] = $search->highlight($doc->title);//高亮处理标题 
        $info[$doc->id]['href'] = '/b_d@'.encode($doc->c_id).'@'.encode($doc->id).'.html';//高亮处理标题 
        $info[$doc->id]['message'] = $search->highlight(strip_tags(htmlspecialchars_decode($doc->message)));//高亮处理标题 
   }

return $info;
}