初试lucene
lucene 的下載和測試
?
?? 以前 上過信息檢索的課程 , 用的是教材 Modern Information Retrieval 的影印版 . 這本教材相當經典 , 講述了許多非常經典的理論與方法 , 特別是老師獨特的上課方式 , 以及老 師本身對于信息檢索領域的熱情 ( 用她自己的話說是 very enjoy), 這讓我也對信息檢索產 生了濃厚的興趣 , 對信息檢索的各種模型也都較熟悉 . 然而 , 雖然日常用到了各種搜索引擎 , 但是并沒有觸及過任何一個搜索引擎的內核 . 因此 , 之前對于信息檢索的了解也頂多停留在一些經典模型的掌握和日常搜 索引擎的使用上 .
??? 現 在跟老師做項目 , 要用到全 文檢索的搜索引擎 , 這讓我 有機會深入到搜索引擎的學習和研究中去 . 我們小組通過收集各種資料 , 進行比較 , 最后決定采用 apache( 發音 : 阿帕奇 , 就跟 apache 直升機的讀音相同 ) 的開源 (open source) 項目 lucene( 發音 :/'lu:si:n/), 在此基礎上 , 根據我們項目的需要以及團隊在信息檢索領域的核心技術 , 對 lucene 進行二次開發 . 因此 , 我們搜索引擎的研究也就是從 lucene 開始的 . 本文就上周對 lucene 的學習和使用中的一些主要問題進行闡述 , 作為資料共享 .
1 lucene2.0.0 的下載
?? lucene 已經成為 apache 的頂級開源項目 , 到目前為止 , 已經發展到 2.0.0 版本 , 這個版本在今年 5 月 26 才發表 . 據 lucene 自身的介紹和國內外一些用戶的評論來看 ,2.0.0 版的性能在以前版本的基礎上有了很大的提高 . 所以 , 在我們的項目中也使用了 2.0.0 版的 .
?? lucene 的下載建議到 apache 的官方主頁下載 , 我用的是校園網 , 速度還不錯 . 網址是 :http://apache.justdn.org/lucene/java/ . 我們使用的是 java 版的 , 當然也可以找到相應的 C++ 版本的 . 在下載時可以考慮下載兩個文件 , 一是 lucene-2.0.0.zip , 這個是經過編譯后的可以直接運行 DEMO 的版本 , 一是 lucene-2.0.0-src.zip , 這個是源代碼文件 , 在運用時需要使用的就是文件里面的內容 . 下載頁上的其他壓縮文件可以不用下 , 因為國內一般不會用到這些東東 .?
2 lucene2.0.0 的測試
?? 下載 后 , 可以對 lucene 進行一些簡單的測試 , 以了解其性能 . 但是由于 lucene 本身只是一個工具包 (Tool Kit), 并不能象其他系統一樣通過雙 擊 .exe 就可以直接運行 . 需要編一個簡單的接口 , 才能正常運行 . 不過在下載的 lucene 文件中 , 已經有一個 demo 文件 , 其中有一些簡單的接口 , 可以通過控制臺來運行 . 具體操作如下 :?
2.1 Java 開發環境配置(需要安裝 JDK, 并配置好 JDK 環境)
?? 我使 用的是 jdk1.5.0_07 ,安裝目錄為: D:/java/jdk1.5.0_07.
2.2 Lucene 開發環境配置
?? 先解 壓下載的 lucene-2.0.0.zip ,可以看到 lucene-core-2.0.0.jar 和 lucene-demos-2.0.0.jar 這兩個文件。將其解壓到: d:/Java/lucene-2.0.0 。
??? 然 后 , 將 lucene-core-2.0.0.jar 和 lucene-demos-2.0.0.jar 文件所在路徑添加到 classpath( 類路徑 ), 其設置跟配置 JDK 的 classpath 的方法一樣。比如 , 在我所建的目錄下 , 就需要將 d:/Java/lucene-2.0.0/lucene-core-2.0.0.jar 和 d:/Java/lucene-2.0.0/lucene-demos-2.0.0.jar 添加到環境變量的 classpath 中 .
2.3 Demo 測試
?? 進入 控制臺 , 先建立索 引 , 然后就可 以執行查詢了 . 具體操作 如下 :
建立索引 :
> java org.apache.lucene.demo.IndexFiles d:/Java/lucene-2.0.0/src
該功能是對 C:/Java/lucene-1.9.1/src 下所有文件建立索引,同時,在當前命令行位置將生成 “index” 文件夾 ,"index" 文件夾用與存儲文件索引的數據。
執行查詢 :
> java org.apache.lucene.demo.SearchFiles
控制臺將會出現 “Query:” 提示符,輸入檢索關鍵詞,按回車鍵,便可得到查詢結果。 ?
注: 我在剛開始學習時 , 借用了 tag 的 lucene 學習筆記 , 其地址是 http://blog.csdn.net/qixiang_nj/archive/2006/04/27/679134.aspx
3 測試結果
?? 經過 初步簡單的測試 , 我們發現 DEMO 實現了一些簡單的功能 , 如它能夠執行對文本、 html 、 xml 、 word 、 pdf 文件的檢索 , 并且支持中英文的檢索。但進一步的測試發現,雖然它能夠實現以上 功能,但其性能較差,因為它能很好的支持英文檢索,而對中文的檢索則并不那么順利,這大概是因為其是 English Speaking country 開 發的緣故。比如,在對 word 文件的檢索中,我們發現,如果是純英文文檔,它能夠順利的將其檢索出來,而如果是純中文或中英文混合的文檔,則檢索不到相關文獻。
??? 我 分析了一下,覺得其中主要有兩個原因,一是 DEMO 本來只是用來測試的,所以其編得比較簡單,自然其效率不高;二是 lucene 的 Analyzer 中文分析器效果不好。在我們項目的進展中,解決了這兩個問題。
?
?
加點小知識,
我們使用lucene會創 建index索引文件。demo里面創建的地方在我們使用命令行的地方。
如果說還要使用 就得把以前的index文件刪除。
這個是demo 還有一個web的demo
lucene本來就是在 存儲的時候會建立一個索引文件,方便后面的搜索。
轉載于:https://www.cnblogs.com/y0umer/archive/2010/07/06/3839414.html
總結
- 上一篇: 【javascript】函数调用的对象和
- 下一篇: TCP/IP协议基础