您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“全文搜索Sphinx怎么實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Sphinx是由俄羅斯人Andrew Aksyonoff開發(fā)的一個(gè)全文檢索引擎。意圖為其他應(yīng)用提供高速、低空間占用、高結(jié)果 相關(guān)度的全文搜索功能。Sphinx可以非常容易的與SQL數(shù)據(jù)庫和腳本語言集成。當(dāng)前系統(tǒng)內(nèi)置MySQL和PostgreSQL 數(shù)據(jù)庫數(shù)據(jù)源的支持,也支持從標(biāo)準(zhǔn)輸入讀取特定格式 的XML數(shù)據(jù)。通過修改源代碼,用戶可以自行增加新的數(shù)據(jù)源(例如:其他類型的DBMS 的原生支持)
高速的建立索引(在當(dāng)代CPU上,峰值性能可達(dá)到10 MB/秒);
高性能的搜索(在2 – 4GB 的文本數(shù)據(jù)上,平均每次檢索響應(yīng)時(shí)間小于0.1秒);
可處理海量數(shù)據(jù)(目前已知可以處理超過100 GB的文本數(shù)據(jù), 在單一CPU的系統(tǒng)上可 處理100 M 文檔);
提供了優(yōu)秀的相關(guān)度算法,基于短語相似度和統(tǒng)計(jì)(BM25)的復(fù)合Ranking方法;
支持分布式搜索;
支持短語搜索
提供文檔摘要生成
可作為MySQL的存儲(chǔ)引擎提供搜索服務(wù);
支持布爾、短語、詞語相似度等多種檢索模式;
文檔支持多個(gè)全文檢索字段(最大不超過32個(gè));
文檔支持多個(gè)額外的屬性信息(例如:分組信息,時(shí)間戳等);
支持?jǐn)嘣~;
中文的全文檢索和英文等latin系列不一樣,后者是根據(jù)空格等特殊字符來斷詞,而中文是根據(jù)語義來分詞。目前大多數(shù)數(shù)據(jù)庫尚未支持中文全文檢索,如Mysql。故,國(guó)內(nèi)出現(xiàn)了一些Mysql的中文全文檢索的插件,做的比較好的有hightman的中文分詞。Sphinx如果需要對(duì)中文進(jìn)行全文檢索,也得需要一些插件來補(bǔ)充。其中我知道的插件有 coreseek 和 sfc 。
Coreseek是現(xiàn)在用的最多的sphinx中文全文檢索,它提供了為Sphinx設(shè)計(jì)的中文分詞包LibMMSeg 。并提供了多個(gè)系統(tǒng)的二進(jìn)制發(fā)行版,其中有rpm,deb及windows下的二進(jìn)制包。另外,coreseek也為sphinx貢獻(xiàn)了以下事項(xiàng):
GBK編碼的數(shù)據(jù)源支持
采用Chih-Hao Tsai MMSEG算法的中文分詞器
中文使用手冊(cè)(這份中文手冊(cè)對(duì)國(guó)內(nèi)使用sphinx新手——特別是英語不太好的人來說,提供了極大的便利)
sfc(sphinx-for-chinese)是由網(wǎng)友happy兄提供的另外一個(gè)中文分詞插件。其中文詞典采用的是xdict。據(jù)其介紹,經(jīng)過測(cè)試,目前版本在索引速度上(Linux 測(cè)試平臺(tái))基本上能夠達(dá)到索引UTF-8英文的一半,即官方宣稱速度的一半。(時(shí)間主要是消耗在分詞上)。 現(xiàn)提供了與sphinx最新版(sphinx 0.9.10)同步的sphinx-for-chinese-0.9.10-dev-r2006.tar.gz 。此版本增加了sql_attr_string,經(jīng)過本人的測(cè)試。其安裝和配置都非常方便。happy兄在分詞方面還有另外一個(gè)貢獻(xiàn)——php-mmseg,這是php對(duì)中文分詞的一個(gè)擴(kuò)展庫。
在此,對(duì)以上二位作者謹(jǐn)以最大的敬意
此外,如果你對(duì)中文分詞不感興趣。或者說僅需要實(shí)現(xiàn)類似sql中l(wèi)ike的功能,如: select * from product where prodName like ‘%手機(jī)%’。sphinx也不會(huì)讓你失望,這個(gè)或許就是官網(wǎng)對(duì)中文的簡(jiǎn)單實(shí)現(xiàn)——直接對(duì)字索引。并且搜索速度還不錯(cuò)^_^ 。
本文會(huì)對(duì)以上三種中文應(yīng)用進(jìn)行測(cè)試,并以文檔的方式記錄下來,這也許正是本文檔的重點(diǎn)。
Sphinx在mysql上的應(yīng)用有兩種方式:
①、采用API調(diào)用,如使用PHP、java等的API函數(shù)或方法查詢。優(yōu)點(diǎn)是可不必對(duì)mysql重新編譯,服務(wù)端進(jìn)程“低耦合”,且程序可靈活、方便的調(diào)用;
缺點(diǎn)是如已有搜索程序的條件下,需修改部分程序。推薦程序員使用。
②、使用插件方式(sphinxSE)把sphinx編譯成一個(gè)mysql插件并使用特定的sql語句進(jìn)行檢索。其特點(diǎn)是,在sql端方便組合,且能直接返回?cái)?shù)據(jù)給客戶端
不必二次查詢(注),在程序上僅需要修改對(duì)應(yīng)的sql,但這對(duì)使用框架開發(fā)的程序很不方便,比如使用了ORM。另外還需要對(duì)mysql進(jìn)行重新編譯,且需要mysql-5.1以上版本
支持插件存儲(chǔ)。系統(tǒng)管理員可使用這種方式
二次查詢注:到現(xiàn)在發(fā)布版本為止——sphinx-0.9.9,sphinx在檢索到結(jié)果后只能返回記錄的ID,而非要查的sql數(shù)據(jù),故需要重新根據(jù)這些ID再次從數(shù)據(jù)庫中查詢,
正在開發(fā)的sphinx 0.9.10版本已可存儲(chǔ)這些文本數(shù)據(jù),作者曾試過,性能和存儲(chǔ)上的效果都不佳,畢竟還沒出正式版
本文采用的是第一種方式
在*nix系統(tǒng)下安裝,首先需要以下一些軟件支持
軟件環(huán)境:
操作系統(tǒng):Centos-5.2
數(shù)據(jù)庫:mysql-5.0.77-3.el5 mysql-devel(如果要使用sphinxSE插件存儲(chǔ)請(qǐng)使用mysql-5.1以上版本)
編譯軟件:gcc gcc-c++ autoconf automake
中文的全文檢索和英文等latin系列不一樣,后者是根據(jù)空格等特殊字符來斷詞,而中文是根據(jù)語義來分詞。中文分詞主要有2個(gè)插件
Coreseek是現(xiàn)在用的最多的sphinx中文全文檢索,它提供了為Sphinx設(shè)計(jì)的中文分詞包LibMMSeg ,是基于sphinx的基礎(chǔ)上開發(fā)的。
sfc(sphinx-for-chinese)是由網(wǎng)友happy兄提供的另外一個(gè)中文分詞插件。其中文詞典采用的是xdict。
本文主要介紹Coreseek的安裝方法
因?yàn)閏oreseek需要autoconf 2.64以上版本,因此需要升級(jí)autoconf,不然會(huì)報(bào)錯(cuò)從http://download.chinaunix.net/download.php?id=29328&ResourceID=648下載autoconf-2.64.tar.bz2,安裝方法如下:
tar -jxvf autoconf-2.64.tar.bz2
cd autoconf-2.64
./configure
make
make install
新版本的coreseek將詞典和sphinx源程序放在了一個(gè)包中,因此只需要下載coreseek包就可以了。
http://pan.baidu.com/s/1dEK4x3r
tar xzvf coreseek-3.2.14.tar.gz
cd mmseg-3.2.14
./bootstrap #輸出的warning信息可以忽略,如果出現(xiàn)error則需要解決
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..
cd csft-3.2.14
sh buildconf.sh #輸出的warning信息可以忽略,如果出現(xiàn)error則需要解決
./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
cd ..
如果出現(xiàn)這種報(bào)錯(cuò)config.status: error: cannot find input file: src/Makefile.in,就在configure 之前執(zhí)行如下命令
aclocal
libtoolize --force automake --add-missing autoconf autoheader make clean
“全文搜索Sphinx怎么實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。