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

面试题 相关文章推荐
Jar包的作用是什么
Mar 30 面试题
如何让Java程序执行效率更高
Jun 25 面试题
联想C++笔试题
Jun 13 面试题
描述内存分配方式以及它们的区别
Oct 15 面试题
介绍一下游标
Jan 10 面试题
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
Feb 21 面试题
3个CCIE对一个工程师的面试题
May 06 面试题
介绍一下gcc特性
Jan 20 面试题
EJB实例的生命周期
Oct 28 面试题
Python里面如何实现tuple和list的转换
Jun 13 面试题
Python中pass语句的作用是什么
Jun 01 面试题
介绍一下Ruby的多线程处理
Feb 01 面试题
如何防止同一个帐户被多人同时登录
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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
PHP的变量总结 新手推荐
2011/04/18 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
python实现哈希表
2014/02/07 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
Python3远程监控程序的实现方法
2019/07/15 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
params有什么用
2016/03/01 面试题
临床医学专业学生的自我评价分享
2013/11/21 职场文书
医大实习自我鉴定
2013/12/07 职场文书
夜不归宿检讨书
2014/02/25 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
雷锋的故事观后感
2015/06/10 职场文书
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
python字符串的一些常见实用操作
2022/04/06 Python