CentOS PyLucene實(shí)際的使用
特別值得一提的是CentOS PyLucene有很多值得學(xué)習(xí)的地方,這里我們主要介紹CentOS PyLucene,包括介紹CentOS PyLucene等方面。CentOS PyLucene安裝及使用.
CentOS PyLucene是Python對(duì)搜索引擎Lucene 的封裝,可以通過Python方便的調(diào)用Lucene的API。Lucene是全文搜索的模塊,可以很方便的嵌入到應(yīng)用程序中。對(duì)于Python的應(yīng)用程序可以通過CentOS PyLucene是程序具備全文搜索的能力。
安裝下載CentOS PyLucene。我們選擇下載Windows版的CentOS PyLucene-2.1.0-2-gcj346-py25-win32.zip。下載后解壓。拷貝解壓目錄下Python目錄中的文件到C:\Python25\Lib\site-packages下,即可完成安裝。
解壓目錄下有samples例子,可以直接運(yùn)行IndexFiles.py文件建立索引:python IndexFiles.py c:/會(huì)在IndexFiles.py同目錄下建立Index目錄存放建立的索引,上面的命令會(huì)把C:盤所有的.txt文件內(nèi)容進(jìn)行索引,如果想索引其他類型的文件,修改源代碼即可。
運(yùn)行解壓目錄下的SearchFiles.py進(jìn)行查詢:python SearchFiles.py然后輸入文件中的任意單詞或漢字都可以查詢得到。
想給理財(cái)易的留言板添加個(gè)搜索功能,但是又不想用like這樣的搜索語(yǔ)句,慢的要死,搞不好還會(huì)成為網(wǎng)站被攻擊的漏洞,但是Mysql又不支持中文的全文檢索,只支持英文。(似乎最新版的Mysql 6已經(jīng)可以很方便的用插件方式添加中文全文檢索了,而且似乎已經(jīng)有人把這個(gè)插件做出來了。)以前記得海量是出過修改版的支持中文全文檢索的Mysql的,于是跑去下載了看看,結(jié)果發(fā)現(xiàn)最新的版本好像也是2005年出的了,以后再也沒有出過。想來想去,還是用Lucene這樣的獨(dú)立的全文檢索方式吧。
CentOS PyLucene 以前就曾經(jīng)下載測(cè)試過,但是一直沒有實(shí)際的使用,今天再看,還是遇到不少問題。它的下載里面有源碼也有二進(jìn)制文件,源碼的編譯似乎非常的麻煩,一種方式是需要Java和Ant,另一種是需要Gcj,而且還需要自己修改Makefile文件,修改N多參數(shù)。二進(jìn)制文件里面提供了許多個(gè)版本的下載,因?yàn)殚_發(fā)環(huán)境是Ubuntu的,所以就下載了Ubuntu 7.04對(duì)應(yīng)的二進(jìn)制文件,解壓看了說明,簡(jiǎn)單的很,把Python的幾個(gè)文件復(fù)制到Python的site-packages目錄,把gcj的兩個(gè)文件復(fù)制到/usr/local/lib目錄,然后進(jìn)入tests目錄運(yùn)行一下測(cè)試,成功了,相當(dāng)簡(jiǎn)單。
然后就開始寫生成索引和檢索的代碼了。這些代碼跟Java的Lucene是完全一致的,因?yàn)镃entOS PyLucene只是起一個(gè)包裝的作用,最終還是調(diào)用的Lucene。具體的代碼就不放在這里了。
代碼寫完了傳到服務(wù)器上,結(jié)果不能執(zhí)行,對(duì)了,服務(wù)器上還沒有安裝CentOS PyLucene呢。因?yàn)榉?wù)器是CentOS 4的,網(wǎng)站并沒有提供對(duì)應(yīng)的二進(jìn)制文件下載,于是嘗試使用源碼編譯,結(jié)果把兩個(gè)版本的源碼都下載下來了,一看Readme就暈了,有必要搞這么復(fù)雜嗎?對(duì)應(yīng)CentOS有個(gè)鏈接,過去看了下是提供了個(gè)source rpm文件,下載安裝后進(jìn)去卻發(fā)現(xiàn)是兩個(gè)壓縮文件,分別是Java Lucene的和CentOS PyLucene的,但是卻沒有提供安裝說明,看了半天還是摸不著門道。最后還是決定使用Ubuntu的這個(gè),畢業(yè)都是針對(duì)gcj的,而且服務(wù)器上已經(jīng)安裝了gcj了,相關(guān)的庫(kù)應(yīng)該都不缺。
復(fù)制了對(duì)應(yīng)的文件以后運(yùn)行測(cè)試代碼,結(jié)果卻提示undefined symbol: PyUnicodeUCS4_FromUnicode這樣一個(gè)錯(cuò)誤。Google了一下發(fā)現(xiàn)不只是CentOS PyLucene的問題,似乎是編譯Python的時(shí)候所使用的Unicode參數(shù)和該程序里面所調(diào)用的函數(shù)不一致。沒辦法,重新下載了Python 2.5.1的源碼進(jìn)行編譯,加上了--enable-unicode=ucs4參數(shù),再運(yùn)行測(cè)試代碼,OK,一切正常了。運(yùn)行一下網(wǎng)站,功能也沒有問題,對(duì)中文支持也非常好。
【編輯推薦】