Home >php教程 >PHP源码 >xunsearch搜索类封装

xunsearch搜索类封装

PHP中文网
PHP中文网Original
2016-05-25 17:07:40961browse

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 &#39;lib/XS.php&#39;;
		//初始化
		$xs = new XS($project); 
		$this->_project = $project;
		$this->_xindex = $xs->index; 
		$this->_xsearch = $xs->search;
		$this->_xsearch->setCharset(&#39;UTF-8&#39;);
	}
	
	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][&#39;pid&#39;] = $doc->pid;
				$data[$key][&#39;nid&#39;] = $doc->nid;
				$data[$key][&#39;category&#39;] = $doc->category;
				$data[$key][&#39;url&#39;] = $doc->url;
				$data[$key][&#39;name&#39;] = $xs->search->highlight(htmlspecialchars($doc->name));
				$data[$key][&#39;message&#39;] = $xs->search->highlight(htmlspecialchars($doc->message));
			}
			
			return array(&#39;data&#39;=>$data,&#39;count&#39;=>$count);
		}
		return array();
	}
	
	public function hotWord($num,$type=&#39;lastnum&#39;){
	
		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(&#39;1&#39;,&#39;2&#39;,&#39;3&#39;))
		$this->_xindex->del($idArray); 
	}
	
	public function addSynonym($word1,$word2){
		
		$this->_xindex->addSynonym($word1,$word2);
	}
	
	public function clearIndex(){
		
		$this->_xindex->clean();
	}
	
	
}

?>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn