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