• 技术文章 >php教程 >PHP源码

    xunsearch搜索类封装

    PHP中文网PHP中文网2016-05-25 17:07:40原创411
    php代码

    <?php
    /**
     * SoClass.php
     * 索引与搜索类
     * 作者:tonyfeng (465200185@qq.com)
     * 创建时间:2012-12-19 11:44:42
     */
    
    class SoClass {
    	
    	private $_xindex;
    	
    	private $_xsearch;
    	
    	private $_project;
    	
    	public function __construct($project){
    
    		//载入引导文件
    		require_once 'lib/XS.php';
    		//初始化
    		$xs = new XS($project); 
    		$this->_project = $project;
    		$this->_xindex = $xs->index; 
    		$this->_xsearch = $xs->search;
    		$this->_xsearch->setCharset('UTF-8');
    	}
    	
    	public function query($keyWord,$row=20,$jnum=0){
    
    		$xs = new XS($this->_project);
    		$xs->search->setFuzzy();
    		$xs->search->setAutoSynonyms();
    		$xs->search->setQuery($keyWord); //支持同义词搜索,默认打开
    		$xs->search->setLimit($row, $jnum); //设置返回结果最多为 5 条,并跳过前 10 条
    		$docs = $xs->search->search(); //执行搜索,将搜索结果文档保存在 $docs 数组中		
    		$count = $xs->search->count(); //获取搜索结果的匹配总数估算值
    		if($count){
    			$data = array();
    			foreach ($docs as $key=>$doc){
    				$data[$key]['pid'] = $doc->pid;
    				$data[$key]['nid'] = $doc->nid;
    				$data[$key]['category'] = $doc->category;
    				$data[$key]['url'] = $doc->url;
    				$data[$key]['name'] = $xs->search->highlight(htmlspecialchars($doc->name));
    				$data[$key]['message'] = $xs->search->highlight(htmlspecialchars($doc->message));
    			}
    			
    			return array('data'=>$data,'count'=>$count);
    		}
    		return array();
    	}
    	
    	public function hotWord($num,$type='lastnum'){
    	
    		return $this->_xsearch->getHotQuery($num,$type);
    	}
    	
    	public function expanded($keyWord){
    		
    		return $this->_xsearch->getExpandedQuery($keyWord);
    	}
    	
    	public function lastCount(){
    		
    		return $this->_xsearch->getLastCount();
    	}
    	
    	public function index($data,$update=0){
    	
    		// 创建文档对象
    		$doc = new XSDocument;
    		$doc->setFields($data);
    		
    		// 添加或更新到索引数据库中
    		if(!$update){
    			$this->_xindex->add($doc);
    		}else{
    			$this->_xindex->update($doc);
    		}
    	}
    		
    	public function delete($idArray){
    		
    		//删除索引(主键删除array('1','2','3'))
    		$this->_xindex->del($idArray); 
    	}
    	
    	public function addSynonym($word1,$word2){
    		
    		$this->_xindex->addSynonym($word1,$word2);
    	}
    	
    	public function clearIndex(){
    		
    		$this->_xindex->clean();
    	}
    	
    	
    }
    
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php使用file_get_contents函数抓取页面信息 下一篇:PHP实现加密的几种方式介绍_php技巧
    PHP编程就业班

    相关文章推荐

    • PHP实现各种经典算法• php 字符串操作函数 (1/2)• 剖析PHP中的输出缓冲 flush之类• php读取目录及子目录下所有文件名的方法• 做项目过程中学到的PHP知识收集

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网