(一)、编写项目配置文件
通过创建一个项目文件来创建一个新的项目
cd /data/local/xunsearch/sdk/php/apptouch njw.ini文件内容如下project.name = njw
project.default_charset = utf-8
server.index = 8383
server.search = 8384
[id]
type = id
[title]
type = title
[norms]
index = self
[picture]
文件中我们定义项目的名称为njw,编码为utf-8,数据中我们有如下几个字段,id,title,norms,picture
(二)、linux下项目的一些操作
清空njw项目的索引数据
/data/local/xunsearch/sdk/php/util/Indexer.php --clean njw
在对应的目录下生成搜索骨架
/data/local/xunsearch/sdk/php/util/SearchSkel.php njw /data/wwwroot/workplace/
导入mysql数据库生成索引数据
/data/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://root:123456@127.0.0.1/njw88_dev --sql="select g.id id,g.title title,g.norms norms,i.picture picture from b2b_goods g INNER JOIN b2b_goods_images i ON g.id=i.goods_id" --project=njw
(三)、索引同步
xunsearch可以通过调用XSindex的相关API来更新索引
(四)、引入php-sdk的入口文件/data/local/xunsearch/sdk/php/lib/XS.php进行搜索功能和界面开发
事列如下:
header('Content-Type:text/html;charset=utf-8;');
引入XS.php文件
require_once '../../../local/xunsearch/sdk/php/lib/XS.php';
try{
实例化对应的项目
$xs = new XS('njw');
获取请求过来的搜索关键字
$keywords = trim($_GET['keywords']);
if(empty($keywords)){
exit;
}
获取分页数
$p = $_GET['p'];
if(isset($p)){
$p = max(1, intval($p));
}else{
$p = 1;
}
//搜索文档
$search = $xs->search;
执行搜索关键字
$search->setQuery($keywords);
//set offset,limit
$p = max(1, intval($p));
$n = XSSearch::PAGE_SIZE;
设置分页
$search->setLimit($n,($p-1)*$n);
执行查询
$docs = $search->search();
获取的是一个对应循环是输出之前配置文件建立的对应字段即可
foreach ($docs as $doc){
echo $doc->rank() . ". " . $doc->title . " [" . $doc->percent() . "%]\n,规格为:".$doc->norms . "\n";
echo "<img src='http://".$doc->picture."' style='width:100px;height:100px;' /><br/>";
}
//echo $xs->search->count('测试');
}catch(XSException $e){
$error = strval($e);
}