介绍下Lucene建立索引的过程


Posted in 面试题 onMarch 02, 2016
代码如下:

1. package utils;
2.
3. import java.io.File;
4. import java.io.FileReader;
5. import java.io.IOException;
6. import java.io.Reader;
7.
8. import org.apache.lucene.analysis.standard.StandardAnalyzer;
9. import org.apache.lucene.document.Document;
10. import org.apache.lucene.document.Field;
11. import org.apache.lucene.index.IndexWriter;
12.
13. public class Indexer {
14.
15. public int index(String indexDir, String dataDir) throws IOException
16. {
17. File indexDirFile = new File(indexDir);
18. File dataDirFile = new File(dataDir);
19. int numIndexed = index(indexDirFile, dataDirFile);
20. return 0;
21. }
22.
23. private int index(File indexDirFile, File dataDirFile) throws IOException {
24. if(!dataDirFile.exists() || !dataDirFile.isDirectory())
25. {
26. throw new IOException(dataDirFile + ” does not exist or is not a directory”);
27. }
28. IndexWriter writer = new IndexWriter(indexDirFile, new StandardAnalyzer(), true);
29. writer.setUseCompoundFile(false);
30. indexDirectory(writer, dataDirFile);
31.
32. int numIndexed = writer.docCount();
33. writer.optimize();
34. writer.close();
35. return numIndexed;
36. }
37.
38. private void indexDirectory(IndexWriter writer, File dataDirFile) throws IOException {
39. File[] files = dataDirFile.listFiles();
40. for(int i = 0; i
41. {
42. File f = files[i];
43. if(f.isDirectory())
44. {
45. indexDirectory(writer, f);
46. }else if(f.getName().endsWith(”.java”) || f.getName().endsWith(”.txt”))//需要索引的文件类型
47. {
48. indexFile(writer, f);
49. }
50.
51. }
52.
53. }
54.
55. private void indexFile(IndexWriter writer, File f) throws IOException {
56. if(f.isHidden() || !f.exists() || !f.canRead())
57. {
58. return;
59. }
60. System.out.println(”Indexing” + f.getCanonicalPath());
61. Document doc = new Document();
62. Reader txtReader = new FileReader(f);
63. doc.add(new Field(”path”,f.getCanonicalPath(),Field.Store.YES,Field.Index.UN_TOKENIZED));
64. doc.add(new Field(”contents”,txtReader));
65. doc.add(new Field(”name”,f.getName(),Field.Store.YES,Field.Index.UN_TOKENIZED));
66. writer.addDocument(doc);
67. }
68.
69. }
70.
71.
调用的代码如下:
1. String filesRepoDir = “C:/workspace-2.0″;//需要被索引的目录
2. String indexDir = “C:/apache-tomcat-6.0.18/webapps/index”;//存放索引的目录
3. Indexer indexer= new Indexer();
4. indexer.index(indexDir, filesRepoDir);

Tags in this post...

面试题 相关文章推荐
一套Java笔试题
Aug 20 面试题
编写strcpy函数
Jun 24 面试题
介绍一下游标
Jan 10 面试题
STP的判定过程
Oct 01 面试题
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
Jan 13 面试题
恶意软件的定义
Nov 12 面试题
C#中有没有运算符重载?能否使用指针?
May 05 面试题
Windows和Linux动态库应用异同
Apr 17 面试题
解决方案设计综合面试题
Aug 31 面试题
Overload和Override的区别
Sep 02 面试题
中间件的定义
Aug 09 面试题
Java语言程序设计测试题选择题部分
Apr 03 面试题
如何防止同一个帐户被多人同时登录
Aug 01 #面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Mar 30 #面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 #面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
Aug 18 #面试题
GC是什么?为什么要有GC?
Dec 08 #面试题
Overload和Override的区别
Sep 02 #面试题
什么时候用assert
May 08 #面试题
You might like
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
php适配器模式简单应用示例
2019/10/23 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
浅谈python对象数据的读写权限
2016/09/12 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
留学推荐信中文范文
2015/03/26 职场文书
中学社团活动总结
2015/05/07 职场文书
大学军训心得体会800字
2016/01/11 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android