在看源码先先简单了解下Lucene的目录结构
analysis: analysis是提供给lucene和solr用的分析器,analysis下有多个不同的module:
- common: 所有分词器都会用到的共同依赖
- icu: icu分析器, ICU是International Components for Unicode (unicode组件)
- kuromoji: 日语分析器
- morfologik: 波兰语分析器
- OpenNLP: 自然语言分析器
- phonetic: 语音特征分析器
- smartcn: 汉语分析器
- stempel: 一个包含波兰语的分析器
- uima: 一个借助apache uima的分析器,apache uima是用于分析非结构化内容(文本,音频视频等)的组件架构。
backward-codes: 老版本的codec,codec是lucene的编码器,这个是拿来兼容老版本用的
- benchmark: lucene基准性能测试
- core: 内核代码
- demo: 写了些示例程序
- expressions: lucene4.6之后引入的运算模块,可以做一些field之间的加减乘除等
- facet: 计算影响因子,大概是词频之类的,在es中影响因子接口被aggreations接口给包装掉了.
- grouping: 实现类似于sql中group by的功能
- highligher: 实现查询结果高亮
- join: 实现join操作
- memory: 内存索引,这个module下就一个类文件
- misc: 提供了多种工具,索引分片/合并、改变规范,查找高频词等
- queries: lucene core用的查询器
- queryparser: 查询解析器,有classic,Analyzing,Complex Phrase,Extendable,Flexible,Surround,XML多种解析器
- replicator: 提供索引的复制功能
- sandbox: 开放给所有lucene commiter的工作空间,打包时候不会默认打进去,有啥新的idea就可以往这个包上提东西。
- Spatial: 提供空间搜索功能
- spatial3d: 人如其名
- spatial-extras: 包如其名
- suggest: 关键字推荐功能,给推荐和搜索关键词最接近的词