一、項目的配置文件
1、要想使用xunsearch,首先需要進行配置文件的配置。
默認目錄在app下,如下面的結構,每一個搜索項目都需要有一個ini文件進行相應的配置。
?
舉例:
project.name = novel
project.default_charset = utf-8
server.index = 8383
server.search = 8384[novel_id]
type = id[title]
type = title[author_name][description]
type = body[last_time]
type = date
?
2、每個字段用一個區段配置來表示,中括號內的名字即為字段名。每個項目包含若干個字段,具體由項目搜索需求決定,并不需一味的與實際源數據庫 (如 MYSQL) 一致,而只需要設計搜索功能所涉及的字段即可。
?
3、這里為了安全起見,我同樣對查詢出的數據起了別名,進而一一對應xunsearch中ini文件定義的字段(第三部分可以看到)。
?
chm手冊下載地址:http://www.xunsearch.com/site/download/xs_php_manual.chm
建議如果初次使用xunsearch,則從手冊最開始跟著操作一遍。尤其是新手上路部分。
注:在線生成編輯配置文件ini?http://www.xunsearch.com/tools/iniconfig
?
二、生成骨架文件【建議最好執行這步,節省很多開發時間】
文檔地址:http://www.xunsearch.com/doc/php/guide/util.skel
?
三、從數據庫查詢出需要的數據,并且將數據添加到xunsearch索引數據庫
這里,我是在我外層定義了一個php文件來完成添加數據到XunSearch索引數據庫的操作,代碼如下
<?php
//require '/data/xun/lib/XS.php';
require './lib/XS.php';$XS = new XS('novel');// 建立 XS 對象,項目名稱為:novel
$index = $XS->index; // 獲取 索引對象//創建pdo對象,并從表中讀出需要的數據
$dsn = "mysql:dbname=test;host=127.0.0.1";
$pdo = new PDO($dsn,'root','123456');
$sql = "select comic_id as novel_id,name as title,pen_name as author_name,description,last_verify_time as last_time from front_comic";
$stmt = $pdo->query($sql);
$data = $stmt->fetchAll(2);//循環添加數據到XunSearch索引庫
foreach ($data as $v){// 創建文檔對象$doc = new XSDocument();$doc->setFields($v);// 添加到索引數據庫中$res = $index->add($doc);
}$res = $res ? 'success' : 'fail';
echo $res;
執行a.php文件,則從數據庫查詢出來的數據就添加到XunSearch索引數據庫中了。
?
四、演示效果
這里,訪問之前我們生成的對應的骨架文件就可以看到效果了。
到這里,基本的全文檢索就已經實現了。
總結:
1、XunSearch全文檢索的原理就是將mysql數據庫中的我們需要的數據查詢出來,并一一對應的添加到XunSearch的索引數據庫中,然后,用戶在前端查詢的時候,就直接查詢的是Xunsearch索引數據庫中的內容了。這樣,可以說速度就變得非常非常快了。
2、在項目中引入XunSearch或者sphinx等全文檢索工具,則會大大降低mysql的壓力,并且能夠更快速的檢索出用戶需要的數據,無疑體驗會更加好。
3、XunSearch索引數據庫的文件默認存儲在/usr/local/xunsearch/data/項目名 中,每一個項目有自己獨立的一個存儲庫,如下:
4、進入novel項目的存儲庫,我們可以看到三個文件,一個是存儲數據的,一個是存儲日志的,一個是存儲搜索記錄的
?
?
值得注意的是:在測試演示效果的時候,由于xunsearch數據庫并不是你這邊剛提交完,那邊數據就直接更新了,而是異步的(默認大概每兩個小時才更新一次),所以,為了更快速的看到效果,我們需要手動去刷新,如下:
util/Indexer.php --flush-log novel
?