日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

lucene python_Python下的Lucene,PyLucene

發(fā)布時間:2025/4/5 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lucene python_Python下的Lucene,PyLucene 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

下一個項目準(zhǔn)備用Python+Django來完成,先做些技術(shù)準(zhǔn)備。數(shù)據(jù)庫方面用Django已經(jīng)試驗的差不多了,但是似乎性能很差。自己編譯了Mysql,用虛擬機測試,生成1000個用戶,1000篇文章用時80秒,這種并發(fā)性能恐怕沒有辦法讓人滿意。(每篇文章需要單獨生成Tag和文章與Tag的對應(yīng)關(guān)系,涉及8次數(shù)據(jù)庫操作。)花了一天時間試驗InnoDB和MyIsam的區(qū)別,但是似乎沒有影響,開不開Transaction都一樣。先不管它了,也許和我的機器硬件有關(guān)系,硬件的sync關(guān)不掉。看官方的說法,SlashDot用Django可以實現(xiàn)每秒800條數(shù)據(jù)的插入速度。

網(wǎng)站肯定要用到全文檢索,目前唯一的全文檢索解決方案就是Lucene了,.Net上也有Lucene.Net可以選。搜索了一下,發(fā)現(xiàn)了PyLucene,這個Python上的Lucene實現(xiàn)。似乎是使用Python對Lucene進(jìn)行了一次重新包裝。

下載了它的Windows版本,安裝比較簡單,直接把幾個庫文件復(fù)制到對應(yīng)的Lib目錄就行了。運行了一下Sample目錄下的測試文件,先是用IndexFiles和SearchFiles試了一下,SearchFiles是接收參數(shù)來搜索的,但是我沒有辦法輸入中文,會出現(xiàn)錯誤提示。后來把要搜索的詞直接放到文件里面去,不報錯了,但是搜索不出來。本以為PyLucene不支持中文,正在納悶豆瓣的搜索是怎么做的,突然發(fā)現(xiàn)了一個好東西。

看了一下sample目錄下的LuceneInAction目錄,里面居然有個ChineseTest文件。它調(diào)用的是另一個目錄下的測試文件,測試一個漢字的搜索,運行了一下,居然是成功的。再看了一下IndexFiles,里面讀文件用的編碼是英文編碼,改成GB2312,OK,可以搜索到了。但是只能搜索單字,不能按詞搜索。只要輸入兩個字就出錯。再比較一下Test文件,Query的生成方法不一樣,TermQuery似乎是單元搜索,不支持詞搜索,換成了QueryParser,成功了。但是還有一個小問題,比如搜索“中華”,在文章里,在中和華中間隨便加多少空格和回車都沒有關(guān)系,照樣可以搜索到。但是加入其它字或者英文字母以后就搜索不到了。這個影響不大,畢竟人們常用的搜索都是自然詞。

有了PyLucene這個好東西,心頭一塊大石頭算是落地了。沒想到,等到要在開發(fā)服務(wù)器的Linux上安裝這個東西的時候,可費了功夫了。

官方的下載包做的很奇怪,ubuntu, debian, gentoo都有對應(yīng)的二進(jìn)制包可用,但是Redhat就沒有,只能用源碼包編譯,而它的編譯方式又做的極其簡陋,沒有configure文件,只有Makefile。按照說明,需要自己編輯Makefile,去掉你需要的注釋行,修改參數(shù),然后直接Make。但是里面有一個對DB的引用,檢查了一下,BerkeleyDB似乎在CentOS4里面沒有,只好自己去官方網(wǎng)站下載了4.4.20的源碼,先編譯安裝它。雖然最新版是4.5.20,但是怕不兼容,所以還是用它配置文件里推薦的這個。編譯這個東西也挺奇怪,不過還好,畢竟有官方文檔一步步的說明,解壓后需要進(jìn)入build_unix目錄,然后調(diào)用../dist/configure來配置,然后make && make install。指定prefix失敗。裝完了這個東西,再改PyLucene的配置文件,根據(jù)生成的錯誤消息猜了好幾次才終于可以編譯了。最終需要改的地方為:

1、取消Linux那一段的注釋。

2、PREFIX_PYTHON是你的Python的目錄。因為我的Python是自己編譯安裝的,所以這里需要改一下。

3、DB=這個我指向了BerkeleyDB的源碼目錄才通過編譯的(還好沒刪)。

其它的不用改。編譯到一半報錯,有一個libgcj.a文件找不到,到/usr/lib下找了一下沒有這個文件,但是有個差不多的.so,于是做了個ln -s,居然就通過編譯了。然后make install的時候又有問題,提示libgcc_s.so.1找不到,這個是Makefile里面的LIB_INSTALL參數(shù)指定的,我不知道它的意義在哪里,最后我也沒找到這個文件,但是直接進(jìn)入Sample目錄運行了一下測試文件,居然就成功了。真TMD。這就是Linux嗎?

終于可以安心的研究Django了。似乎Ruby On Rails還沒有支持中文全文檢索的模塊吧?

總結(jié)

以上是生活随笔為你收集整理的lucene python_Python下的Lucene,PyLucene的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。