coreseek 是在Sphinx 基礎(chǔ)上開發(fā)的全文檢索軟件, 具 體介紹詳見文尾 附 錄
=========================================================
一、 安裝環(huán)境及介紹
1. 前提環(huán)境
系 統(tǒng)環(huán)境:centos5
操 作用戶:root
文 中粗體字為需用戶輸入的命令內(nèi)容
2. 源碼包準備
下 載MMSEG 分詞源碼包
wget http://www.coreseek.cn/uploads/sources/mmseg3_0b3.tar.gz
下 載coreseek 源碼包
wget http://www.coreseek.cn/uploads/sources/csft3_0b4.tar.gz
解 壓縮源碼包
tar -xzvf mmseg3_0b3.tar.gz
tar -xzvf csft3_0b4.tar.gz
3. 安裝環(huán)境準備
安 裝g++ 編譯環(huán)境
yum install g++
yum install gcc
yum install make
安 裝python 開發(fā)組件
yum install python
yum install python-dev
安 裝make
yum install make
4. 編譯mmseg
cd mmseg.3.0b3/
./configure --prefix=/ var / eyou /mmseg
make
make install
5. 編譯coreseek
cd csft3_0b4/
./configure --prefix=/ var / eyou /coreseek --with-python --with-mysql --with-mmseg-includes=/ var / eyou /mmseg/include/mmseg --with-mmseg-libs=/ var / eyou /mmseg/lib/
make & make install
此步安裝完成后, 將在/ var / eyou / 下生成 coreseek 目錄
coreseek 目錄中有三個目錄分別為bin 、 etc 、var
bin 中 存有sphinx 用到的一些執(zhí)行文件 包括 indexer 索引建立 search 查詢工具 searchd 查詢服務器 等
etc 中是配置文 件,該目錄中 有一個sphinx.conf. disk ,這個相當于sphinx 的 配置例子文件,我們以這個文件為藍本,重新創(chuàng)建一個空白內(nèi)容的sphinx.conf ,存放在 etc 下 。
6. 創(chuàng)建dict 目錄
創(chuàng)建字典目錄:
mkdir /var/eyou/coreseek/dict/
產(chǎn)生字典步驟:
cd /root/soft/ mmseg.3.0b3/data
/var/eyou/mmseg/bin/mmseg -u unigram.txt
產(chǎn)生了unigram.txt.uni , 移到相應目錄。
cp unigram.txt.uni /var/eyou/coreseek/dict/uni.lib
創(chuàng)建 / var / eyou /coreseek/dict/mmseg.ini
內(nèi)容:
[mmseg]
merge_number_and_ascii=1;
number_and_ascii_joint=-;
compress_space=0;
seperate_number_ascii=1;
#merge_number_and_ascii: 字母和數(shù)字連續(xù)出現(xiàn)是非切分
#number_and_ascii_joint: 連接數(shù)字和字母可用的符號,如'-' '.' 等
#compress_space :暫時無效
#seperate_number_ascii :是否拆分數(shù)字,如 1988 -> 1/x 9/x 8/x 8/x
7. php 調(diào)用 sphinx api
通過官方API 調(diào)用Sphinx ,具體為:
在 coreseek 安裝目錄有一個API 目錄,里面有三個PHP 文 件:test.php ,test2.php 和sphinxapi.php 。 sphinxapi.php 是sphinx 調(diào)用接口封裝文件(這個文件就是官方提供的php 調(diào) 用API ),test.php 是一個在命令行下執(zhí)行的查詢例子文件,test2.php 是 一個生成摘要的 例子文件。
8. 配置 sphinx.conf
具體參見sphinx.conf 的 注釋說明
9. 啟動服務
建 立索引
/var/eyou/coreseek/bin/indexer --config /var/eyou/coreseek/etc/sphinx.conf
啟 動 searchd 服務
/var/eyou/coreseek/bin/searchd --config /var/eyou/coreseek/etc/sphinx.conf
二、 附錄 :全文檢索----coreseek
1. 全文搜索與數(shù)據(jù)庫搜索的區(qū)別
o 專為全文搜索優(yōu)化,效率更高
由于典型的數(shù)據(jù)庫系統(tǒng)要考慮用戶的“增刪改查”等多種復雜操作,因此其存取數(shù)據(jù)的方式需要考察綜合考慮各種應用;而全文搜索的數(shù)據(jù)存取方式 只考慮快速讀取,相比數(shù)據(jù)庫的查詢,要快10 倍或更多。(即使啟用了數(shù)據(jù)庫內(nèi)置的全文搜索功能,這個結(jié)論仍成立)。
o 支持復雜的查詢表達式
數(shù)據(jù)庫系統(tǒng)的查詢,往往只支持“AND ” 或 "OR" 等有限的模式,而全文檢 索不但支持"AND" 、“OR ” 查詢,還支持“NOT ”、“近似”、 “整句”等多種查詢方式;同時相比數(shù)據(jù)庫系統(tǒng),進行在一定范圍內(nèi)查詢時也更高效
o 支持按相關(guān)度排序
數(shù)據(jù)庫查詢出的結(jié)果,往往按照數(shù)據(jù)庫內(nèi)置的排序規(guī)則進行排序,往往只能按時間、按點擊等有效的排序規(guī)則進行;全文搜索除了能夠支持數(shù)據(jù)庫的 排序規(guī)則外,還支持按照結(jié)果的相關(guān)度排序,這往往會給訪問者帶來更大的便利。
o 支持中文分詞
數(shù)據(jù)庫提供的全文搜索功能往往不支持中文分詞(或僅提供二元切分),導致某些短語檢索不到或出現(xiàn)大量不相干的數(shù)據(jù);中文全文檢索系統(tǒng)支持中 文分詞,進一步過濾了不相干的數(shù)據(jù)。
2. 自建全文搜索與使用Google 等第三方網(wǎng)站提供的站內(nèi)全文搜索的區(qū)別
o 對網(wǎng)站設(shè)備有要求
自建全文搜索往往需要站長有至少一臺獨立主機,而使用第三方提供的全文搜索對站點的要求低,虛擬主機即可;不過,出現(xiàn)全文搜索需求的站點通 常已經(jīng)有自己的獨立主機了。
o 索引更新更及時
由于搜索服務在第三方托管,其往往只能按照一定的規(guī)則定期更新索引庫(往往是幾小時、甚至幾天才更新一次索引),您網(wǎng)站上的新出現(xiàn)的內(nèi)容往 往不能及時被搜索到;
使用自建全文搜索,可以保證您網(wǎng)站上新出現(xiàn)的內(nèi)容可以”立即“被檢索到。
o 更適應您的網(wǎng)站
由于中文需要進行分詞的特性,導致沒有一套通用的詞庫可以適用于全部網(wǎng)站,要得到優(yōu)秀的檢索結(jié)果需要定制一套適用于您網(wǎng)站的詞庫;
采用第三方的搜索服務,您是無法修改第三方廠商的詞庫的,而使用自建全文搜索則無此問題。
o 更有利于您網(wǎng)站的數(shù)據(jù)整合
有些網(wǎng)站不止是論壇,往往還包括內(nèi)容管理(CMS) 、商城等多種應用,而使用數(shù)據(jù)庫搜索往往需要用戶在各個系統(tǒng) 中都進行搜索才能找到內(nèi)容;
第三方的檢索無法區(qū)別各個系統(tǒng)的不同。而自建的全文搜索可以有效的區(qū)分各個數(shù)據(jù)來源的不同數(shù)據(jù),真正做到一次搜索應有盡有,從而改善您網(wǎng)站 的訪問體驗,增加您網(wǎng)站的點擊率。
o 避免您的訪問者遇到某些尷尬
第三方的搜索結(jié)果頁面不是您可以控制修改的,有推薦一些可能會使您網(wǎng)站訪問者尷尬的搜索短語的可能。而使用自建全文搜索則完全無此問題。