1、獲取:
xunsearch下載地址: http://www.xunsearch.com/site/download。
linux命令行下載:wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
解壓:tar -xjf xunsearch-full-latest.tar.bz2
2、安裝:
根據提示進行操做,輸入 xunsearch 軟件包的安裝目錄,這裏最好把xunsearch單獨放在一個目錄下。
cd xunsearch-full/
sh setup.sh
3、啓動
啓動/從新啓動 xunsearch 的後臺服務$prefix 替換爲你的xunsearch安裝目錄
cd $prefix;
bin/xs-ctl.sh restart
添加到開機啓動腳本,在 Linux 系統中將腳本指令$prefix/bin/xs-ctl.sh restart寫進 /etc/rc.local 便可
4、xunsearch項目配置文件詳解
項目名稱 project.name = AppName
默認字符集 project.default_charset = UTF-8
定義字段[field_name]
type 字段類型
- string 字符型,適用多數狀況,也是默認值
- numeric 數值型,包含整型和浮點數,僅當字段需用於以排序或區間檢索時才設爲該類型,不然請使用 string 便可
- date 日期型,形式爲 YYYYmmdd 這樣固定的 8 字節,若是沒有區間檢索或排序需求不建議使用
- id 主鍵型,確保每條數據具有惟一值,是索引更新和刪除的憑據,每一個搜索項目必須有且僅有一個 id 字段,該字段的值不區分大小寫
- title 標題型,標題或名稱字段,至多有一個該類型的字段
- body 內容型,主內容字段, 即本搜索項目中內容最長的字段,至多隻有一個該類型字段,本字段不支持字段檢索
5、weight 混合區檢索時的機率權重在混合檢索時,能夠對標題和內容等不一樣字段進行權重計算,若是你不想該字段參與計算權重可設爲 0 。一般默認值爲 1 ,但 title 型默認爲 5 而 body 型則固定爲 1 。
weight = 1
6、index 索引方式
- none 不作索引,全部的搜索匹配均與本字段無關,這個字段只用於排序或搜索結果展現用到。
- self 字段索引,能夠在搜索時用 field:XXX 來檢索本字段
- mixed 混合區索引,不標明字段的默認搜索也能夠檢索本字段
- both 至關於 self + mixed,兩種狀況均索引
7、搜索相關代碼
require '$prefix/sdk/php/lib/XS.php';
$xs = new XS('demo'); // 創建 XS 對象,項目名稱爲:demo
$search = $xs->search; // 獲取 搜索對象
//搜索語句
$query = '項目測試'; // 這裏的搜索語句很簡單,就一個短語
$search->setQuery($query); // 設置搜索語句
$search->addWeight('subject', 'xunsearch'); // 增長附加條件:提高標題中包含 'xunsearch' 的記錄的權重
$search->setLimit(5, 10); // 設置返回結果最多爲 5 條,並跳過前 10 條
$docs = $search->search(); // 執行搜索,將搜索結果文檔保存在 $docs 數組中
$count = $search->count(); // 獲取搜索結果的匹配總數估算值
8、xunsearch原理說明
當你安裝完xunsearch以後,會有兩個(服務)軟件啓動
- 索引服務或者說索引服務器(是創建在xapian核心上的),而後它會監聽一個端口,他負責維護索引文件或者說索引表(索引的增,刪);
- 搜索服務或者說搜索服務器(scws分詞器核心上),它也會監聽一個端口,他負責根據客戶提交過來的數據的 進行分詞,到索引表中查詢獲得相關數據的id(這裏的id是主鍵索引),而後再到數據庫中查詢,而後返回結果集。
- 知道他的原理以後,程序員怎麼按照上面的發送命令呢,即xunsearch提供的php sdk,咱們程序員只要根據sdk中api就能夠了,因此開發就簡單了。
- 官網架構截圖
![全文索引xunsearch的詳細講解及sphinx的比較 全文索引xunsearch的詳細講解及sphinx的比較](http://static.javashuo.com/static/loading.gif)
- 補衝說明:通過本人測試發現,xunsearch與sphinx原理上略有不一樣,xunsearch固然在建立索引時,其實他是建立了一個本身的數據庫, 若是你用xunsearch去查尋數據時,他不會再到你的mysql數據庫中去查尋了,而是直接到它自己的數據庫中去查尋,而後返回數據,而sphinx 不是這樣的,sphinx建立一些索引文件(索引表),而後經過sphinx去查尋數據時,首先他到索引文件查尋數據,而後返回的是當前要查尋數據的 id(這裏id是主鍵),而後再經過id去到mysql數據中查尋數據,而後再返回給數據。
9、xunsearch與sphinx的比較
9.一、共同點:
二者均可以基於MySQL,都是基於C/C++開發的。Xunsearch是國內開源團隊基於國外的Xapian,全部有些是直接基於Xapian和Sphinx的比較。
9.二、區別:
9.2.一、單一索引最大記錄:Sphinx: 1億條記錄
創建索引的速度:
Sphinx: 100萬條記錄/3~4分鐘,1000玩條記錄/50分鐘內
Xunsearch: 1萬條距離/4.14分鐘
9.2.二、 查詢速度:
Sphinx: 1千萬條記錄下爲0.x秒(毫秒級)
Xunsearch: 100萬條記錄爲0.5秒
9.2.三、分佈式搜索:
Sphinx: 支持
Xunsearch: 未發現相關文檔
9.2.四、對中文支持:
Xunsearch > Sphinx,Xunsearch支持拼音搜索
9.2.五、使用簡單化:
Xunsearch > Sphinx