|
Sphinx特性: 高速的建立索引(在當代CPU上,峰值性能可達到10MB/秒);高性能的搜索(在2– 4GB的文本數(shù)據(jù)上,平均每次檢索響應時間小于0.1秒);可處理海量數(shù)據(jù)(目前已知可以處理超過100GB的文本數(shù)據(jù),在單一CPU的系統(tǒng)上可處理100M文檔);提供了優(yōu)秀的相關度算法,基于短語相似度和統(tǒng)計(BM25)的復合Ranking方法;支持分布式搜索; 提供文件的摘錄生成;可作為MySQL的存儲引擎提供搜索服務;支持布爾、 最大不超過短語、詞語相似度等多種檢索模式;文檔支持多個全文檢索字段(32個);文檔支持多個額外的屬性信息(例如:分組信息,時間戳等);停止utf-8編碼;原生的MySQL支持(同時支持MyISAM查詢;支持單一字節(jié)編碼和UTF 和InnoDB);原生的PostgreSQL支持.以上純屬廢話,下面來看配置:下載程序文件,然后解壓,放到一個目錄下,放哪無所謂,關鍵是配置文件,這才是重點我們把sphinx.conf.in改為sphinx.conf,修改里面的配置,如下:source gccompany//source后的名稱想怎么命名都行,但是index中會用到這個名字 {//以下配置跟連接你本地數(shù)據(jù)庫有莫大的關系 type=mysql//數(shù)據(jù)庫類型mysql sql_host=localhost//連接本地數(shù)據(jù)庫,下面是賬號、密碼、數(shù)據(jù)庫、端口、SET NAMES utf8這都不用說了 sql_user=root sql_pass=330318747 sql_db=gongchang sql_port=3307 sql_query_pre=SET NAMES utf8 sql_query=select*from f_company sql_attr_uint=cid//sql_attr_這就有點問題了,只有 uint,str2ordinal,timestamp,float,multi有限的了,而且str2ordinal sql_attr_str2ordinal=account sql_attr_timestamp=addtime//開始想不通以上為什么只能這么簡單的幾個屬性,后來還是想通了,sphinx將指定的查詢數(shù)據(jù)索引后,你查出來的并不是sql語句想要查出//的所有信息,只會有sql_attr_設定的幾列,你還需要根據(jù)差出來的去查數(shù)據(jù)庫。如果需要排序,排序的字段也一般都是按時間、id排序。//(*^__^*)嘻嘻…,以上純屬個人,臆斷。 #sql_query_info=SELECT*FROM f_company WHERE cid=$id//這說是測試用的,也不知道干嘛滴。 } index gccompany { source=gccompany//這個gccompany就是上面那個source后的名字,這下該知道他們什么關系了。 path=F:/www/APMServ5.2.6/sphinx/data/gccompany///創(chuàng)建索引保存的位置這個需要自己建立目錄 docinfo=extern charset_type=utf-8//設定編碼 charset_table=0.9,A.Z-a.z,_,a.z,U+410.U+42F- U+430.U+44F,U+430.U+44F//設定允許的字符表 ngram_len=1//這條和下條是配置支持中文索引的配置,啥意思,此處略去一萬字。 ngram_chars=U+3000.U+2FA1F } indexer { mem_limit=200M//允許索引的大小 } searchd { port=9312//程序開啟的端口,以下的配置,大家看著該,(*^__^*)嘻嘻…, 己配得方便,而且配置的發(fā)現(xiàn)沒,我用的是張宴的集成安裝環(huán)境,的確比自// 性能啊~也比我這菜鳥好的多, log=F:/www/APMServ5.2.6/sphinx/log/searchd.log query_log=F:/www/APMServ5.2.6/sphinx/log/query.log read_timeout=5 max_children=30 pid_file=F:/www/APMServ5.2.6/sphinx/log/searchd.pid max_matches=10000000 seamless_rotate=1 preopen_indexes=0 unlink_old=1 }以上就是配置了,然后讓我們來生成索引命令提示符,跳到sphinx/bin下,那有好幾個exe,分別支持不同的指令。indexer--config F: /www/APMServ5.2.6/sphinx/sphinx.conf gccompany//這個gccompany是index后的名稱哦,知道怎么對應吧~該指令就是執(zhí)行指定的配置文件,然后索引指定的index,如果沒有錯誤的話,而且數(shù)據(jù)大量的話,會有一個執(zhí)行時間,否則會有錯誤信息提示。執(zhí)行好后,我們去看data/company下的有沒有東西,忘了說了,這個目錄需要自己建立,切記。生成完索引后,我們就可以開啟程序的守護進程,或直接安裝(我沒成功過,你們可以試試,有成功的可以給我留言)還是spinx/bin目錄下,searchd.exe支持的searchd命令searchd--config F:/www/APMServ5.2.6/sphinx/sphinx.conf或者安裝searchd--config F:/www/APMServ5.2.6/sphinx/sphinx.conf--install開啟守護進城后,程序就能使用函數(shù)了,連接程序了,不過別把命令提示符關了,關了,程序就不運行了。然后找spinx源碼,有個api/sphinxapi.php,這個是關鍵,將他拷貝你apache服務目錄下,應為程序中需要引用 include'sphinxapi.php'; $sc=new SphinxClient(); $sc-setServer('localhost',9312);//sphinx配置中,我們用的是9312端口 $sc-setMatchMode(SPH_MATCH_ALL);//匹配模式,全局匹配,還能排序操作,分組什么的吧~ $res=$sc-query($text,'gccompany');//$text是要索引的字符串,gccompany當然是我們已經索引的index名稱啦。 print_r($res);看看效果吧~不會你會發(fā)現(xiàn)得到的結果并不一定是你預料中的,沒關系,那是正確的,顯示的只有sql_attr_那幾項,你還需要根據(jù)那幾項再去查數(shù)據(jù)庫才能獲得你想要的東西,這玩意就說到這把~還得學習。
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|