- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机]Lucene代码分析
Lucene源代码分析[1]
首先讲一下Lucene的发音是Loo-seen,这是Lucene in Action中提到过的。另外强调的一点是我用的版本是1.9版,大家看到这里不要惊讶,我用这么早的版本,是为了能更好的了解Lucene的核心。如果有人看过最新的版本就应该了解,对于一个初学者,Lucene最高版本并不那么简单,它涉及了多线程,设计模式,对我反正是很挑战了。我先看老版本这也是受《LINUX内核完全注释》作者赵炯的启发,他分析的不是最新的Linux内核,而是1.11的版本。
我开始还是用调试的方式来解释,我想大家和我一样,如果看了半天analyzer也会有点不耐烦,我先写一个什么意义都没有例子(有那么一点意义的例子,网上很多):
package forfun;
?
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.index.IndexWriter;
?
public class Test
{
public static void main( String[] args ) throws Exception
{
IndexWriter writer = new IndexWriter( E:\\a\\, new
SimpleAnalyzer(), true);
}
}
IndexWriter是最核心的一个类,一般的Blogger把其它所有的包都分析完了,就剩这最核心的一个包的时候,就分析不动了。
我们先看一下它的参数,第一个就是索引存放的路径,第二个参数是一个Analyzer对象,它对输入数据进行过滤,分词等,第三个参数如果为true,那么它删除原目录内的所有内容重建索引,如果为false,就在已经存在的索引上追加新的内容。
你可以先运行一下,就会发现指定的目录下有一个segments文件。
调试的时候,暂时不去管SimpleAnalyzer类。
我们看一下IndexWriter类的构造函数:
public IndexWriter(String path, Analyzer a, boolean create)
throws IOException {
this(FSDirectory.getDirectory(path, create), a, create, true);
}
这里我们看到一个新的类FSDirectory:
public static FSDirectory getDirectory(String path, boolean create)
throws IOException {
return getDirectory(new File(path), create);
}
再看getDirectory函数:
public static FSDirectory getDirectory(File file, boolean create)
throws IOException {
file = new File(file.getCanonicalPath());
FSDirectory dir;
synchronized (DIRECTORIES) {
dir = (FSDirectory) DIRECTORIES.get(file);
if (dir == null) {
try {
dir = (FSDirectory) IMPL.newInstance();
} catch (Exception e) {
throw new RuntimeException(
cannot load FSDirectory class: + e.toString());
}
dir.init(file, create);
DIRECTORIES.put(file, dir);
} else if (create) {
dir.create();
}
}
synchronized (dir) {
dir.refCount++;
}
return dir;
}
DIRECTORIES是一个Hashtable对象,DIRECTORIES注释上讲,目录的缓存,保证唯一的路径和Directory对应,所以在Directory上同步可以对读写进行同步访问。
(This cache of directories ensures that there is a unique Directory instance per path, so that synchro
您可能关注的文档
- [英语学习]高职商务英语词汇学习现状与隐喻教学研究.doc
- [英语考试]2003年10月高等教育自学考试综合英语二答案.doc
- [英语考试]FinancialTerms8财务术语汉英对照_英语题库.pdf
- [英语考试]时态综合练习.doc
- [英语考试]翻译证考试三级.doc
- [英语考试]自我介绍礼仪.doc
- [视觉传达]广告学概论第八章经营者的谋略.ppt
- [计算机]008产品审核管理程序110614.doc
- [英语考试]英语历年典型考题5.ppt
- [计算机]06初赛分析.pdf
- 广东省东莞市2024-2025学年八年级上学期生物期中试题(解析版).pdf
- 非遗剪纸文创产品开发经理岗位招聘考试试卷及答案.doc
- 广东省东莞市2024-2025学年高二上学期期末教学质量检查数学试题.pdf
- 体育安全理论课件图片素材.ppt
- 3.1 公民基本权利 课件-2025-2026学年道德与法治八年级下册 统编版 .pptx
- 广东省潮州市湘桥区城南实验中学等校2024-2025学年八年级上学期期中地理试题(解析版).pdf
- 大数据运维工程师岗位招聘考试试卷及答案.doc
- 广东省深圳市福田区八校2026届数学八年级第一学期期末教学质量检测模拟试题含解析.doc
- 广东省潮州市湘桥区城基初级中学2024-2025学年八年级上学期11月期中考试数学试题(解析版).pdf
- 广东省潮州市湘桥区城西中学2024-2025学年八年级上学期期中地理试题(解析版).pdf
最近下载
- Q-JJJ 9002-2025铁路建设项目安全穿透式管理实施指南(OCR).pdf VIP
- 项目开发总结报告 项目开发总结报告.doc VIP
- (护理学(护理科研方向))护理科研方法试题及答案.doc VIP
- 2026年教育系统校级后备干部选拔考试题及答案.docx VIP
- 2023年北师大版六年级数学下册全单元测试题【及参考答案】.docx VIP
- GT-Power建模流程与校准技巧-湖南大学.ppt VIP
- 项目成本管理研究开题报告.docx VIP
- 2025 年大学生物医学工程(生物医学基础)试题及答案.doc VIP
- 第十届地球小博士高中组试题及答案.docx VIP
- 六上第二单元形状与结构 复习题 选择题和判断题 6.6练习.docx VIP
原创力文档


文档评论(0)