xunsearch使用记录
部署,配置,有时间在记录
<?php
namespace APPlib;
class XSGameku {
public $error;
public $xs;
public $search;
public $index;
private $project='gameku'; public function __construct(){
if(!defined("XUNSEARCH_SDK_PATH")){
$this->error = 'not define XUNSEARCH_SDK_PATH';
return $this->error;
} include XUNSEARCH_SDK_PATH . 'lib' . DIRECTORY_SEPARATOR . 'XS.php'; if(!class_exists('XS')){
$this->error = 'class XS not exist';
return $this->error;
} $this->xs = new \XS($this->project);
$this->index = $this->xs->getIndex();
$this->search = $this->xs->getSearch();
} public function getSearch($where){
$query = $data = $ids = array();$count = ; if(isset($where['name'])) $query[]= "name:{$where['name']}";
if(isset($where['online'])) $query[]= "online:{$where['online']}";
if(isset($where['seq'])) $query[]= "seq:{$where['seq']}";
if(isset($where['is_ios'])) $query[]= "is_ios:1";
if(isset($where['is_android'])) $query[]= "is_android:1";
if(isset($where['type_new'])) $query[]= "type_new:{$where['type_new']}";
if(isset($where['theme_new'])) $query[]= "theme_new:{$where['theme_new']}";
if(isset($where['price'])) $query[]= "price:{$where['price']}";
if(!isset($where['orderby'])) $where['orderby']='id'; if($query){
$query = implode(' AND ',$query);
}else{
$query = '';
}
//echo $query;
$this -> search -> setQuery($query);
$querty = $this -> search -> getQuery();
//echo ($querty); if(isset($where['star']) && $where['star'] != ){
//计算range--begin,end
$begin = ($star -) * -;
$end = $star * ;
$this -> search -> addRange('star',$begin,$end);
}; switch($where['orderby']){
case 'hot':
$this -> search -> setMultiSort(array('hot'=>true,'id_num'=>false));
$orderby_str = "hot ASC,id DESC";
break;
case 'zuixin':
$this -> search -> setMultiSort(array('zuixin'=>true,'id_num'=>false));
$orderby_str = "zuixin ASC,id DESC";
break;
default:
$this -> search -> setSort('id_num');
$orderby_str = "id DESC";
break;
} $page_start = ($where['pageno']-) * $where['pagesize'];
$this -> search -> setLimit($where['pagesize'], $page_start); $dataA = $this -> search -> search();
if($dataA){
foreach ($dataA as $key=>$doc){
$ids[] = $doc->id;
}
$GamkuModel = \APPlib\get_app_model('GamekuModel');
if($where['field'] == 'www'){
$field = 'id,name,icon,filesize,filesize_ios,type_new,price,star,islike,unlike';
}else{
$field = 'id,name,icon';
}
$data = $GamkuModel->field($field)->where('id in('.implode(',',$ids) .')')->order($orderby_str)->select();
} //var_dump($data);
$count = $this -> search -> getLastCount();
//var_dump($count);
//exit; $max_pageno = ceil($count/$where['pagesize']);
return array($data,$max_pageno,$count); } public function getSearchName($name=false,$pageno=,$pagesize=){
$data=array();$count = ;
$this->search->setScwsMulti();
if($name !== false){
$query = "name:{$name}";
}else{
return false;
} $this -> search -> setQuery($query);
$page_start = ($pageno-) * $pagesize;
$this -> search -> setLimit($pagesize, $page_start); $dataA = $this -> search -> search();
if($dataA){
// foreach ($dataA as $key=>$doc){
// $data[$key]['id'] = $doc->id;
// $data[$key]['name'] = $doc->name;
// $data[$key]['icon'] = $doc->icon;
// } foreach ($dataA as $key=>$doc){
$ids[] = $doc->id;
}
$GamkuModel = \APPlib\get_app_model('GamekuModel');
$field = 'id,name,icon,filesize,filesize_ios,type_new,price,star';
$data = $GamkuModel->field($field)->where('id in('.implode(',',$ids) .')')->select(); } //var_dump($data);
$count = $this -> search -> getLastCount();
//var_dump($count);
//exit; $max_pageno = ceil($count/$pagesize);
return array($data,$max_pageno,$count); } // public function getSearchXun($type,$wd,$platform,$class,$gtype,$orderby,$pageno,$pagesize = 4){
// $this -> search -> setAutoSynonyms();
//$this -> search -> setFuzzy(); //$this->search->setScwsMulti(0);
//$this->search->setScwsMulti(8); //header("Content-type: text/html; charset=utf-8");
//$tokenizer = new \XSTokenizerScws(); //$tokenizer->addDict('/usr/local/xunsearch/data/gameku/dict.xdb', SCWS_XDICT_XDB);
//$tokenizer->setMulti(SCWS_MULTI_ZALL); //$this -> index->setCustomDict('我');
//var_dump($this -> index->getCustomDict());
//$this -> index->setScwsMulti(SCWS_MULTI_ZALL);
//var_dump($this -> index->getScwsMulti());
//exit; // var_dump($tokenizer->hasWord('我','r'));
// var_dump($tokenizer->hasWord('星','n'));
// var_dump($tokenizer->hasWord('我叫','v'));
// var_dump($tokenizer->hasWord('星球','n'));
// var_dump($tokenizer->hasWord('涂他涂','n'));
// print_R($tokenizer->getResult($name));exit; // $this -> search -> setAutoSynonyms();
// //$this -> search -> setFuzzy();
// //$wd = "$wd";
// $this -> search -> setQuery($wd);
// //$this -> search -> setQuery('name:武士 僵尸 大战');
// $this -> search -> addRange('auth_status',2,2);
// //header("Content-Type: text/html;Charset=UTF8;");
// //$this -> search -> addRange('type',3,3);
// //$this -> search -> addRange('platform',2,2);
// //$this -> search -> setSort('dl_count_px',false);
// // $this -> search -> setLimit(3, 0);
// // $querty = $this -> search -> getQuery();
// //$dataA = $this -> search -> search();
// // //$count = $this -> search -> getLastCount();
// // var_dump($querty);
// //$this -> search -> setSort('pub_time_px',false);
// // $querty = $this -> search -> getQuery();
// //var_dump($dataA);exit; // $type != 0 ? $this -> search -> addRange('type',$type,$type) : false;
// $platform != 0 ? $this -> search -> addRange('platform',$platform,$platform) : false;
// $class != 0 ? $this -> search -> addRange('class',$class,$class) : false;
// $gtype != 0 ? $this -> search -> addRange('gtype_new',$gtype,$gtype) : false; // switch($orderby){
// case 1 : $this -> search -> setSort('pub_time_px',false);break;
// case 2 : $this -> search -> setSort('dl_count_px',false);break;
// case 3 : $this -> search -> setSort('star_px',false);break;
// default : break;
// } // $page_start = ($pageno-1) * $pagesize;
// $this -> search -> setLimit($pagesize, $page_start); // $querty = $this -> search -> getQuery();
// $dataA = $this -> search -> search();
// $count = $this -> search -> getLastCount();
// //var_dump($querty);
// $data =array();
// if($count>0){
// foreach ($dataA as $key=>$doc){
// $data[$key]['id'] = $doc->id;
// $data[$key]['name'] = $doc->name;
// $data[$key]['platform']=$doc->platform;
// $data[$key]['icon'] = $doc->icon;
// $data[$key]['mark'] = $doc->mark;
// $data[$key]['star'] = $doc->star;
// $data[$key]['dl_count'] = $doc->dl_count;
// $data[$key]['pub_time'] = $doc->pub_time;
// $data[$key]['comment_id'] = $doc->comment_id;
// }
// }
// $max_pageno = ceil($count/$pagesize);
// return array($data,$max_pageno,$count); // } public function dataIn($id){
if(empty($id) || $id < ){
return false;
}
$GamekuModel = \APPlib\get_app_model('GamekuModel');
$data = $GamekuModel->field('id,name,name_old,online,seq,is_ios,is_android,type_new,theme_new,price,star,star,hot,zuixin,status')->where("id=$id")->find();
if($data && $data['status'] == ){
//创建文档对象。
$dataXun['id'] = $dataXun['id_num'] = $data['id'];
$dataXun['name'] = $data['name'];
$dataXun['name_old'] = $data['name_old'];
$dataXun['online'] = $data['online'];
$dataXun['seq'] = $data['seq'];
$dataXun['is_ios'] = $data['is_ios'];
$dataXun['is_android'] = $data['is_android'];
$dataXun['type_new'] = $data['type_new'];
$dataXun['theme_new'] = $data['theme_new'];
$dataXun['price'] = $data['price'];
$dataXun['star'] = $data['star'];
$dataXun['hot'] = $data['hot'];
$dataXun['zuixin'] = $data['zuixin']; //这里优化为队列
$doc = new \XSDocument;
$doc->setFields($dataXun);
$this->index->update($doc);
$this->index->flushIndex();
return true;
}
} public function deleteIndex($idArray){
$this->index->del($idArray);
//$this->index->flushIndex();
} public function cleanIndex(){
$this->index->clean();
}
}
xunsearch使用记录的更多相关文章
- xunsearch搜索使用
目录 如何开始搜索? 典型处理 快捷操作 搜索中的串接操作 构建搜索语句 如何开始搜索? <?php // 引入 require_once './sdk/xs/lib/XS.php'; // 创 ...
- 记录XunSearch(讯搜)的使用教程步骤(CentOS7下)
一.安装编译工具 yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel ...
- xunsearch: 开启后台服务,索引……随笔记录
重启后台服务: cd $prefix ; bin/xs-ctl.sh restart 索引: # 导入 MySQL 数据库的 dbname.tbl_post 表到 demo 项目中,并且平滑重建 ut ...
- Xunsearch迅搜(基于 xapian+scws 的开源中文搜索引擎)安装与简单使用
今天鼓捣了xunsearch,感觉官方指南写得挺详细,于是按照指南一步一步走,但是感觉越看越凌乱,像看API一样,新手看得特费劲,网上也少有新手教程,于是略过今天的歪路,记录一下我的安装步骤. Xun ...
- xunsearch增量索引改进版
最近测试了xunserach全文索引程序.xunsearch只有LINUX版,所以想用windows服务器请使用其它全文索引程序.xunsearch本身不像coreseek那样自带增量索引的功能,所以 ...
- 实践中 XunSearch(讯搜)更新索引方案对比
检测PHP-SDK的运行条件(查看是否支持XunSearch) $prefix/sdk/php/util/RequiredCheck.php $prefix #替换成你的安装目录 使用 XunSe ...
- xunsearch的使用(二)
1.查看配置文件vim /data/local/xunsearch/sdk/php/app/demo.ini [pid] type = id [subject] type = title [messa ...
- xunsearch基本使用
目录 基本实践 异常捕获 XSDocument 文档 添加操作 ini 更新.修改文档 删除文档 清空索引 平滑重建索引 使用索引缓冲区 自定义 SCWS 词库 基本实践 <?php // 引入 ...
- Linux 之 Xunsearch(2)
Linux 之 Xunsearch(2) 参考教程:[千峰教育] Xunsearch的项目配置文件: 基本说明: (1)项目配置是一个项目的核心灵魂,非常重要,通常保存为.ini文件, 通常存储在/u ...
随机推荐
- noip第22课作业
1. 数字分解 [问题描述] 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和,当n等于5时有6种拆分方法: 5=1+1+1+1+1 5=1+1+1+2 5=1+1+3 5=1+2+ ...
- Curl工具的使用
Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http:// ...
- libtool 创建库的工具
libtool 创建库的工具 1. 背景 在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的用法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样. 对于开发人 ...
- Java中sleep()与wait()区别(涉及类锁相关概念)
在区别之前,我们首先先了解一下关于对象锁,类锁的相关概念(当时查阅的详细地址:http://www.importnew.com/20444.html,该作者对类锁和对象锁进行了详细的举例分析) 对象锁 ...
- SRM476
250pt 题意:饲养N<=50只Badgers,每只食量是X[i],当没看到别的一只Badgers吃东西时,它的食量就会增加Y[i],现在一共用P的粮食,问最多能养的起多少只獾. 思路:枚举一 ...
- Gitlab 赋予某台机器git clone的权限 Deploy key
开发项目CI(持续化部署)的时候,需要赋予jeckins所在的机器从gitlab远程仓库克隆代码到本地的权限. 之前我们基本都是通过管理gitlab某个项目的成员的方式,管理gitlab的权限. 但是 ...
- ASP.NET Web API 框架研究 IoC容器 DependencyResolver
一.概念 1.IoC(Inversion of Control),控制反转 即将依赖对象的创建和维护交给一个外部容器来负责,而不是应用本身.如,在类型A中需要使用类型B的实例,而B的实例的创建不是由A ...
- [smarty] smarty 模板文件中进行字符串与变量的拼接
// smarty 模板引擎 $arr_tribeLabelList["`$tribe_id`_"]
- cxgrid动态多表头
function TForm15.CreateBand(View: TcxGridDBBandedTableView; BandCaption, ParentBandCaption: String) ...
- [C# 开发技巧]如何防止程序多次运行
一.引言 最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c0 ...