本文为大家分享了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程序设计有所帮助。