coreseek是一個(gè)基礎(chǔ)sphinx的中文索引工具柜思,我今天寫(xiě)一下關(guān)于使用python做測(cè)試的方式傅寡。
1.coreseek安裝俊抵,連接mysql的配置此處不贅述册赛,很多人寫(xiě)過(guò)這方面的博客盖矫,單純講python連接sphinx.當(dāng)然我們先啟動(dòng)sphinx進(jìn)程,./searched
2.python要連接sphinx肯定是需要第三方庫(kù)的击奶,你可以去pypi找辈双,當(dāng)然sphinx已經(jīng)告訴我們了,我們?nèi)?home/lpj/soft/coreseek-3.2.14/csft-3.2.14/api (我下載的coreseek解壓到了我的工作目錄下的soft文件夾柜砾,根據(jù)你的情況)湃望,ls一下我們看到這些文件,你是否可以找到sphinxapi.py痰驱,test.py這是操作sphinx的api和測(cè)試腳本,當(dāng)然還有php,java了证芭。
3.了解了這些,我們首先在當(dāng)前api目錄下把sphinxapi拷貝到python使python可以使用這個(gè)模塊
cp sphinxapi.py -a /usr/local/lib/python2.7/dist-packages/,在idle中測(cè)試一下把from sphinxapi import *担映。沒(méi)有報(bào)錯(cuò)引入成功废士。有了第三方模塊,我們就要看看怎么使用了
4.sphinx提供了測(cè)試腳本蝇完,我們?cè)囋嚬傧酰琾ython test.py? python 。最后一個(gè)python是我要查找的關(guān)鍵字短蜕,顯示能夠查處數(shù)據(jù)
5.我們看看為什么test.py能測(cè)試sphinx了氢架, vim test.py就知道了,開(kāi)頭from sphinxapi import *朋魔。前面不用看了岖研,看到cl = SphinxClient()這一句開(kāi)始下是我們需要了解的,我就把test.py中的變量直接寫(xiě)到函數(shù)中警检,好看一些
cl = SphinxClient()
cl.SetServer ( 'localhost', 9312 )? #主機(jī)與端口
cl.SetWeights ( [100, 1] )
cl.SetMatchMode (SPH_MATCH_ANY) #查詢的匹配模式孙援,這個(gè)自己去了解吧害淤,一般用any
res = cl.Query ( 'python', '*' )? #前一個(gè)是關(guān)鍵字,后一個(gè)是索引拓售,*代表所有索引
打印print res窥摄,現(xiàn)在能看到結(jié)果了嗎
{'status': 0, 'matches': [{'id': 2, 'weight': 2, 'attrs': {}}, {'id': 4, 'weight': 2, 'attrs': {}}], 'fields': ['title', 'content'], 'time': '0.025', 'total_found': 2, 'warning': '', 'attrs': [], 'words': [{'docs': 2, 'hits': 4, 'word': 'python'}], 'error': '', 'total': 2}
貌似很復(fù)雜的數(shù)據(jù)結(jié)構(gòu) ,仔細(xì)看一下邻辉,一個(gè)字典溪王,包括status,matches,total_found等等,我們連接sphinx目的是什么值骇?當(dāng)然找出id再去查找mysql莹菱,所以res['matches']又是一個(gè)列表包含了2個(gè)字典,遍歷一下
for i in res['matches']:
print i['id']
打印出了id,我們?nèi)〕隽薸d