拆解Clucene 系列(1)---Clucene的特點和難點

最近,我在閱讀和學習Clucene的源代碼,在此記錄學習和使用心得。網上也有一些分析教程。但幾乎都是大同小異。


搜索是本身是一個偏重於算法和流程的東西。我感覺使用面向過程的編程模式反而更好理解一些,但Clucence使用C++的特性,高度面向對象化,到處是接口。反而加大了理解難度。

clucene的特點:

  1. 支持Ascii和unicode兩種字符集。
  2. 支持多線程並行查詢。
  3. 支持多種查詢方式。
  4. 代碼組織結構清晰簡潔。
  5. 幾乎不依賴第三方庫,部署配置簡單。
  6. 索引文件格式獨立於應用平臺,程序可以跨平臺編譯運行。
  7. 程序自帶有多種分析器,並且很容易擴展。
  8. Clucene提供的api,比較簡單易懂。
Clucence的難點有:
  1. 在代碼中,使用了較多的設計模式。設計模式主要有職責鏈模式,工廠模式,組合模式,迭代器模式等。
  2. 構建索引的過程。
  3. 索引合併的過程。
  4. 權重打分的算法。
  5. 模糊查詢的實現。
  6. Bool查詢的實現。
  7. 一些算法的實現(跳躍表的實現,邊界距離的實現)。
  8. 代碼量比較大,但也沒有日誌,跟蹤不到整個流程。

Clucence的幾個重要術語有:http://blog.csdn.net/smartfox80/article/details/52182689

發佈了105 篇原創文章 · 獲贊 35 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章