PHP搜索引擎xunsearch的使用

一 安装启动xunsearch

wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
tar -xjf xunsearch-full-latest.tar.bz2

cd xunsearch-full-1.3.0/
sh setup.sh #安装 会自动询问安装的路径

cd $prefix ; bin/xs-ctl.sh restart #启动 在Linux 系统中您可以将脚本指令写进 /etc/rc.local 即可开机自启动


PHP-SDK包(已经在安装目录中 可拷贝到自己的网站目录,需要保留app目录及XS入口文件)

|- doc/                    离线 HTML 版相关文档
|- app/                    用于存放搜索项目的 ini 文件
|- lib/XS.php              入口文件,所有搜索功能必须且只需包含此文件    
\- util/                   辅助工具程序目录
    |- RequireCheck.php    用于检测您的 PHP 环境是否符合运行条件
    |- IniWizzaard.php     用于帮助您编写 xunsearch 项目配置文件
    |- Quest.php           搜索测试工具
    \- Indexer.php         索引管理工具

检测运行环境
1. $prefix/sdk/php/util/RequiredCheck.php
2. /path/to/bin/php $prefix/sdk/php/util/RequiredCheck.php
3. $prefix/sdk/php/util/RequiredCheck.php -c gbk

删除方式
$prefix/bin/xs-ctl.sh faststop
rm -fr $prefix

二 使用方式

1. 项目配置文件
配置文件在sdk/php/app 目录下

;项目名称
project.name = test   
;编码格式   
project.default_charset = utf-8         
; 索引服务端配置,默认值为 8383
server.index = 8383
; 搜索服务端配置,默认值为 8384
server.search = 8384

;[id]         字段定义 建议与数据库字段相同
;--------------------------------------
;type = id    字段类型
;类型包括以下
;string 字符型,适用多数情况,也是默认值
;numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string 即可
;date 日期型,形式为 YYYYmmdd 这样固定的 8 字节,如果没有区间检索或排序需求不建议使用
;id 主键型,确保每条数据具备唯一值,是索引更新和删除的凭据,每个搜索项目必须有且仅有一个 id 字段,该字段的值不区分大小写
;title 标题型,标题或名称字段,至多有一个该类型的字段
;body 内容型,主内容字段, 即本搜索项目中内容最长的字段,至多只有一个该类型字段,本字段不支持字段检索
;--------------------------------------
;index 索引方式
;index = none 
;方式包括以下
;none 不做索引,所有的搜索匹配均与本字段无关,这个字段只用于排序或搜索结果展示用到。
;self 字段索引,可以在搜索时用 field:XXX 来检索本字段
;mixed 混合区索引,不标明字段的默认搜索也可以检索本字段
;both 相当于 self + mixed,两种情况均索引
;(通常情况默认值为 none ,但 id 型字段默认是 self ,title 型字段是 both ,body 型字段则固定为 mixed 。)
;-------------------------------------
;以下为demo

project.name = test   
project.default_charset = utf-8         

server.index = 8383
server.search = 8384

[id]
type = id

[title]
type = title

[content]
type = body


2. 建立索引

导入mysql数据 
cd $prefix/sdk/php 
php util/Indexer.php --rebuild --source=mysql://root账号:root密码@127.0.0.1/数据库名称 --sql="SELECT * FROM post(SQL语句)" --project=项目名称 (需要先配置php环境变量)
例:php util/Indexer.php --rebuild --source=mysql://root:[email protected]/post --sql="SELECT * FROM post" --project=test (将post表中的数据导入到test项目中)

3. 使用

require_once '$prefix/sdk/php/lib/XS.php';
$xs = new XS('test');   			// 自动使用 $prefix/sdk/php/app/test.ini 作项目配置文件
$xs = new XS('/path/to/demo.ini');  // 使用 /path/to/demo.ini

4. 搜索对象

$searchObj = $xs->getSearch();
$keyword = '测试';
$docs = $searchObj->search($keyword);//可以使用setLimit 控制条数与分页

//遍历搜索结果
foreach ($docs as $k => $doc) {
    $data[$k]['id'] =  $doc->id;   //使用$doc->id 访问属性的方式获取数据
    $data[$k]['post_title'] =  $searchObj->highlight($doc->post_title); //高亮显示 自动加上em标签
}
return $data;

5. 索引的增删改 (在每次对后台数据操作时,需要更新索引,保证数据的同步)

$xsObj = new \XS('test');
$data = array('id' => '25', 'title' => '标题', 'content' => '内容');//需要操作的数据

$index = $xsObj->getIndex(); //获取索引对象
$doc = new \XSDocument; //创建文档对象
$doc->setFields($data);

$index->add($doc); 增加
$index->update($doc); 更新
$index->del('25'); 删除
$index->del(array('25','26','27')); 删除多个
//$index->flushIndex(); 是否立即刷新缓存,会存在一分钟左右的延迟

更多请参考官方文档 http://www.xunsearch.com/doc/php/guide/start.overview

你可能感兴趣的:(php)