本文为大家分享了php实现搜索类封装示例,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
<?php
/**
* SoClass.php
* 索引与搜索类 */
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();
}
}
?>
|
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。