1 安裝
1.1 安裝依賴環(huán)境
apt-get install php build-essential zlib1g-dev ?php-mysql -y
1.2 安裝xunSearch程序
./setup.sh --prefix=/usr/local/xunsearch
2 啟動(dòng)
/usr/local/bin/xs-ctl.sh restart
3 測(cè)試
$prefix = /usr/local/xunsearch
$prefix/sdk/php/util里面執(zhí)行:
./Indexer.php --source=csv --clean demo
4 加入開機(jī)啟動(dòng)
centos編輯:
/etc/rc.d/rc.local
ubuntu編輯:
/etc/rc.local
添加啟動(dòng)項(xiàng):/usr/local/search/bin/xs-ctl.sh start
這樣再次就可以了:ps -ef | grep search 就可以查看到 1個(gè)主進(jìn)程3個(gè)輔助進(jìn)程。
第二部分:基礎(chǔ)樣例測(cè)試
2.1 demo中csv庫(kù)的測(cè)試
輸入【建立索引庫(kù)】:
進(jìn)入到執(zhí)行目錄:cd?/usr/local/search/sdk/php/util
開啟csv方式測(cè)試:./Indexer.php --source=csv --clean demo
加入如下三條數(shù)據(jù):
1,關(guān)于?xunsearch?的?DEMO?項(xiàng)目測(cè)試,項(xiàng)目測(cè)試是一個(gè)很有意思的行為!,1314336158
2,測(cè)試第二篇,這里是第二篇文章的內(nèi)容,1314336160
3,項(xiàng)目測(cè)試第三篇,俗話說,無三不成禮散劫,所以就有了第三篇,1314336168
最后使用回車結(jié)束,然后使用ctrl+D結(jié)束輸入。
測(cè)試輸出【搜索測(cè)試工具】:
./Quest.php demo 項(xiàng)目
就可以顯示結(jié)果了仿耽。
2.2 user中的sql庫(kù)測(cè)試
新建mysql
創(chuàng)建數(shù)據(jù)庫(kù)及數(shù)據(jù)表:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序號(hào),主鍵各薇,自增',
`username` varchar(200) DEFAULT NULL COMMENT '用戶名',
`passwd` varchar(200) DEFAULT NULL COMMENT '密碼',
`phone` int(11) DEFAULT NULL COMMENT '手機(jī)號(hào)',
`content` text COMMENT '信息',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
插入數(shù)據(jù):隨便插入數(shù)據(jù)即可项贺。
創(chuàng)建配置文件:
/usr/local/search/sdk/php/app# nano user.ini
配置文件引導(dǎo):http://www.xunsearch.com/tools/iniconfig
配置完成內(nèi)容如下:
project.name = user
[id]
type = id
[username]
type = title
[passwd]
[content]
type = body
截至到目前為止:準(zhǔn)備完成。
建立 xunsearch 索引【建立索引庫(kù)】 峭判。
默認(rèn)的demo格式:--source=mysql://[user[:passwd]@]host/dbname[/table]
./Indexer.php --source=mysql://root:flzx_3QC@192.168.50.145/XunSearch/users --sql="select * from users" --clean user
注意:此處的sql語(yǔ)句不要加分號(hào)开缎。
執(zhí)行查詢:
./Quest.php user jingshan
可以查詢到結(jié)果
//感恩、草根林螃、協(xié)同奕删、創(chuàng)新
第三部分:結(jié)合php的基礎(chǔ)使用
3.1 新建項(xiàng)目
新建任意.php文件,包含系統(tǒng)XS.php文件疗认,這樣就可以自動(dòng)引入 XS完残、XSException伏钠、XSDocument、XSIndex谨设、XSSearch熟掂、XSTokenizer對(duì)象
簡(jiǎn)單創(chuàng)建代碼如下:
include "/usr/local/search/sdk/php/lib/XS.php";
try{
$xs = new XS('user');
$doc = new XSDocument;
}catch (XSException $e){
echo $e->getMessage();
}
3.2 異常
如3.1 基礎(chǔ)異常使用即可。
3.3 文檔
類似于msyql值里面的一條行記錄铝宵,幾種賦值方式打掘,推薦setField(array());可以使用foreach循環(huán)顯示。
代碼如下:
include "/usr/local/search/sdk/php/lib/XS.php";
try{
$xs = new XS('user');
$doc = new XSDocument;
$doc->setFields(array(
'username' => 'jingshan2',
'passwd' => '123123',
'phone'=>'13880425377',
'content'=>'真的嗎鹏秋?'
)); // 用數(shù)組進(jìn)行批量賦值
foreach($doc as $name => $value){
echo "$name: $valuen";
}
}catch (XSException $e){
echo $e->getMessage();
}
3.4 索引
索引使用:
$xs = new XS('user');
$index = $xs->index;
針對(duì)索引尊蚁,可以進(jìn)行增刪改查文檔
添加:
$data = array(
'pid' => 234, // 此字段為主鍵,必須指定
'subject' => '測(cè)試文檔的標(biāo)題',
'message' => '測(cè)試文檔的內(nèi)容部分',
'chrono' => time());
// 創(chuàng)建文檔對(duì)象$doc = new XSDocument;
$doc->setFields($data);
// 添加到索引數(shù)據(jù)庫(kù)中$index->add($doc);
更新:
$data = array(
'pid' => 234, // 此字段為主鍵侣夷,是進(jìn)行文檔替換的唯一標(biāo)識(shí)
'subject' => '測(cè)試文檔的標(biāo)題',
'message' => '測(cè)試文檔的內(nèi)容部分',
'chrono' => time());
// 創(chuàng)建文檔對(duì)象$doc = new XSDocument;
$doc->setFields($data);
// 更新到索引數(shù)據(jù)庫(kù)中$index->update($doc);
刪除:
按主鍵刪除:
$index->del('123'); // 刪除主鍵值為 123 的記錄
$index->del(array('123', '789', '456')); // 同時(shí)刪除主鍵值為 123, 789, 456 的記錄
按字段索引此刪除:
$index->del('abc', 'subject'); // 刪除字段 subject 上帶有索引詞 abc 的所有記錄
$index->del(array('abc', 'def'), 'subject'); // 刪除字段 subject 上帶有索引詞 abc 或 def 的所有記錄
清空索引:
$index->clean();
平滑重建索引:
// 宣布開始重建索引$index->beginRebuild();
// 然后在此開始添加數(shù)據(jù)...
$index->add($doc);...
// 告訴服務(wù)器重建完比$index->endRebuild();
索引緩沖區(qū):知道即可横朋。
3.5 搜索
創(chuàng)建搜索對(duì)象:
$search = $xs->search;
典型搜索做法:
$search = $xs->search; // 獲取 搜索對(duì)象
$query = 'jingshan'; // 這里的搜索語(yǔ)句很簡(jiǎn)單,就一個(gè)短語(yǔ)
$search->setQuery($query); // 設(shè)置搜索語(yǔ)句
//$search->addWeight('subject', 'xunsearch'); // 增加附加條件:提升標(biāo)題中包含 'xunsearch' 的記錄的權(quán)重
//$search->setLimit(5, 0); // 設(shè)置返回結(jié)果最多為 5 條百拓,并跳過前 10 條
$docs = $search->search(); // 執(zhí)行搜索琴锭,將搜索結(jié)果文檔保存在 $docs 數(shù)組中
$count = $search->count(); // 獲取搜索結(jié)果的匹配總數(shù)估算值
echo "count:",$count;
foreach($docs as $doc_v){
var_dump($doc_v);
//echo $doc_v->username;
}
快速搜索做法:
$count = $search->count('項(xiàng)目測(cè)試');
$docs = $search->search('項(xiàng)目測(cè)試');
搜索中的串接操作:
忽略:類似命令鏈的方式進(jìn)行操作。
搜索日志:
忽略
3.6 分詞接口
忽略:
第四部分:配置文件
使用配置工具進(jìn)行簡(jiǎn)單的配置即可衙传。
第五部分:管理索引
簡(jiǎn)單的索引對(duì)增刪改查
第六部分:使用搜索
進(jìn)行普通的搜索决帖,獲取搜索的結(jié)果及,設(shè)置搜索內(nèi)容蓖捶。分頁(yè)地回。
第七部分:生成demo
使用創(chuàng)建方式:
./SearchSkel.php -p user -o /root
將生成的框架文件,進(jìn)行web可訪問配置即可俊鱼。
著作權(quán)歸作者所有刻像。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處并闲∠杆互聯(lián)網(wǎng)+時(shí)代,時(shí)刻要保持學(xué)習(xí)帝火,攜手千鋒PHP,Dream It Possible溜徙。