空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          Lucene是開放源代碼的全文搜索引擎工具包,憑借著其強勁的搜索功能和簡單易用的實現,在國內已經很普及,甚至一度出現了言搜索必稱Lucene的盛景。上個月Lucene的開發團隊發布了 Java Lucene 2.3.1 ,相信很多朋友們都用上了。在國內對Lucene的介紹可以分為3塊兒:
          第一類是:以車東Lucene:基于Java的全文檢索引擎簡介 為代表的基礎入門介紹;
          第二類是Lucene倒排索引原理和Lucene軟件包、實現類的介紹;
          第三類是以中文分詞為中心的介紹;

               任何一個軟件,包括所有偉大的軟件都有這樣或者那樣的“缺點”和各自適用的領域,Lucene也不例外。在國內對Lucene這個軟件包的批評,似乎沒有 看到過。可能大家都忙于做項目,縱然Lucene有再大的缺陷,憑借著Lucene良好的口碑,也不會說上一句不是。

               今天在閱讀LingWay (一個做垂直的語義搜索引擎)的CTO Cedric Champeau 先生的博客是發現有一篇題為:Why lucene isn't that good 為什么Lucene并不是想象的那么棒 的文章:Champeau 開門見山指出了Lucene的6大不足之處,鑒于 Lingway 公司使用Lucene已有好幾年的歷史,我相信Cedric Champeau的對Lucene的評論還是值得一讀。

          不選擇使用Lucene的6大原因:

          6、Lucene 的內建不支持群集。
                  Lucene是作為嵌入式的工具包的形式出現的,在核心代碼上沒有提供對群集的支持。實現對Lucene的群集有三種方式:1、繼承實現一個 Directory;2、使用Solr 3、使用 Nutch+Hadoop;使用Solr你不得不用他的Index Server ,而使用Nutch你又不得不集成抓取的模塊;

          5、區間范圍搜索速度非常緩慢;
                 Lucene的區間范圍搜索,不是一開始就提供的是后來才加上的。對于在單個文檔中term出現比較多的情況,搜索速度會變得很慢。因此作者稱Lucene是一個高效的全文搜索引擎,其高效僅限于提供基本布爾查詢 boolean queries;
          4、排序算法的實現不是可插拔的,因為貫穿Lucene的排序算法的tf/idf 的實現,盡管term是可以設置boost或者擴展Lucene的Query類,但是對于復雜的排序算法定制還是有很大的局限性;
          3、Lucene的結構設計不好;
              Lucene的OO設計的非常糟,盡管有包package和類class,但是Lucene的設計基本上沒有設計模式的身影。這是不是c或者c++程序員寫java程序的通病?
              A、Lucene中沒有使用接口Interface,比如Query 類( BooleanQuery, SpanQuery, TermQuery...) 大都是從超類中繼承下來的;
              B、Lucene的迭代實現不自然: 沒有hasNext() 方法, next() 返回一個布爾值 boolean然后刷新對象的上下文;
          2、封閉設計的API使得擴展Lucene變得很困難;
             參考第3點;
          1、Lucene的搜索算法不適用于網格計算;


          詳情可以查看:Cedric Champeau 先生的博客:Why lucene isn't that good 為什么Lucene并不是想象的那么棒

          posted on 2008-08-14 12:36 蘆葦 閱讀(392) 評論(0)  編輯  收藏 所屬分類: JAVA其他
          主站蜘蛛池模板: 伊宁县| 双桥区| 新巴尔虎右旗| 舟山市| 闸北区| 庆城县| 梓潼县| SHOW| 汪清县| 竹溪县| 泸西县| 乡宁县| 濮阳县| 汶川县| 历史| 黎平县| 壶关县| 双城市| 靖宇县| 清水河县| 新邵县| 宜黄县| 巴林右旗| 潼关县| 石阡县| 通许县| 木兰县| 瑞丽市| 乐清市| 贺兰县| 琼海市| 金山区| 大英县| 高淳县| 韶山市| 江达县| 莫力| 双鸭山市| 博白县| 泸州市| 夏河县|