介绍下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...

面试题 相关文章推荐
JRE、JDK、JVM之间的关系怎样
May 16 面试题
寻找迷宫的一条出路,o通路;X:障碍
Jul 10 面试题
将"引用"作为函数参数有哪些特点
Apr 05 面试题
SQL数据库笔试题
Mar 08 面试题
Ado与Ado.net的相同与不同
Dec 08 面试题
.NET笔试题(20个问题)
Feb 02 面试题
PPP协议组成及简述协议协商的基本过程
May 28 面试题
网络技术支持面试题
Apr 22 面试题
捷科时代的软件测试笔试题
Nov 09 面试题
Python文件操作的面试题
Jun 22 面试题
如何用Java实现列出某个目录下的所有子目录
Jul 20 面试题
大唐面试试题(CPU,UNIX等等)
Jan 11 面试题
如何防止同一个帐户被多人同时登录
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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
原生js实现放大镜
2017/02/20 Javascript
tab栏切换原理
2017/03/22 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
python list语法学习(带例子)
2013/11/01 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
python 输出所有大小写字母的方法
2019/01/02 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
python如何绘制疫情图
2020/09/16 Python
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
请说出以下代码输出什么
2013/08/30 面试题
自我评价个人范文
2013/12/16 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
cf战队宣传语
2015/07/13 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python