介绍下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的基础面试题附答案
Jan 10 面试题
简述数组与指针的区别
Jan 02 面试题
经典c++面试题五
Dec 17 面试题
北京某公司的.net笔试题
Mar 20 面试题
请解释流与文件有什么不同
Jul 29 面试题
说一下Linux下有关用户和组管理的命令
Jan 04 面试题
软件测试题目
Feb 27 面试题
软件测试工程师结构化面试题库
Nov 23 面试题
MYSQL支持事务吗
Aug 09 面试题
内部类的定义、种类以及优点
Oct 16 面试题
什么是方法的重载
Jun 24 面试题
为什么要使用servlet
Jan 17 面试题
如何防止同一个帐户被多人同时登录
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脚本的10个技巧(3)
2006/10/09 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Django中FilePathField字段的用法
2020/05/21 Python
python中append函数用法讲解
2020/12/11 Python
高职教师岗位职责
2013/12/24 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
群众路线领导对照材料
2014/08/23 职场文书
工厂见习报告范文
2014/10/31 职场文书
金秋助学感谢信
2015/01/21 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
Promise静态四兄弟实现示例详解
2022/07/07 Javascript