拆解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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章