lucene自带的demo需要在命令行下运行,对于初次学习的人来说极为不变。对其demo进行了修改并附加中文注释,希望对喜爱lucene的人有所帮助,lucene的版本是最新的2.4.
下面是修改后的IndexFiles,可以直接在IDE总运行。代码如下所示:
package com.exceljava.lucene;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.demo.FileDocument;
import org.apache.lucene.index.IndexWriter;
/**
* @author xjj email: exceljava@163.com description:建立索引
* @date Jan 5, 2009
*/
public class IndexFiles {
private IndexFiles() {
}
static final File INDEX_DIR = new File("exceljava");
// 指定要索引的目录
static final String DIR_PATH = "d:\\days";
public static void main(String[] args) {
indexWriter(INDEX_DIR,DIR_PATH);
}
/**
* function:索引创建
* @param file
* @param dirPath
* @date Jan 5, 2009
* @time 5:06:17 PM
*/
public static void indexWriter(File file,String dirPath){
// if (INDEX_DIR.exists()) {
// System.out.println(”索引目录’” + INDEX_DIR + “‘已经存在,请先删除该索引”);
// System.exit(1);
// }
final File docDir = new File(dirPath);
if (!docDir.exists() || !docDir.canRead()) {
System.out.println(”文档目录 ‘” + docDir.getAbsolutePath()
+ “‘不存在或不能读写”);
System.exit(1);
}
long start =System.currentTimeMillis();
try {
IndexWriter writer = new IndexWriter(file,
new StandardAnalyzer(), //
true,//这里的true表示重新建立索引,如果存在也将覆盖。false则表示如果存在索引则在现有基础上进行拓展
IndexWriter.MaxFieldLength.LIMITED);
System.out.println(”索引’” + INDEX_DIR + “‘…”);
indexDocs(writer, docDir);
//合并小索引文件并进行优化
writer.optimize();
writer.close();
long end =System.currentTimeMillis();
System.out.println(”共耗时:” + (end - start)+ “毫秒”);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* function:检索目录,并调用创建索引函数进行索引创建,支持对目录内嵌目录进行检索
* @param writer
* @param file
* @throws IOException
* @date Jan 5, 2009
* @time 4:49:45 PM
*/
static void indexDocs(IndexWriter writer, File file) throws IOException {
if (file.canRead()) {
if (file.isDirectory()) {
String[] files = file.list();
if (files != null) {
//检索内嵌目录
for (int i = 0; i < files.length; i++) {
indexDocs(writer, new File(file, files[i]));
//new File(file, files[i])通过父路径file和子路径files[i]创建文件
}
}
} else {
System.out.println(”添加索引文件: ” + file);
try {
//向索引中添加构造好的文档
writer.addDocument(FileDocument.Document(file));
} catch (FileNotFoundException fe) {
fe.printStackTrace();
}
}
}
}
}
分享到:
相关推荐
Lucene入门demo,lucene简单的应用
可用lucene demo 已经有入门级pdf学习
lucene3.0.0 入门DEMO 适合新手使用 先要新建号相关的目录
里面编写了法创建,搜索的基本方法 LuceneDemo 单个文件索引,创建查找 CopyFile 为多文件复制多些文件做准备 CreateIndexe 多文件创建索引;Searcher多文件搜索对应CreateIndexe
luceneDemo(完整代码) lucene入门 基础类的运用、高亮器的实现、相关度排序
总结了一些实用的demo 包括: 1.建立索引 2.通过IKAnalyzer搜索中文关键词 3.复杂的多字段搜索 4.多线程并发搜索,通过contiperf测试,详见:contiperf_百度百科 5.分页搜索 注意:lucene4.10.0需要jdk1.7以上...
lucene入门demo 实现基本的检索 可以进行改进
根据lucene demo 写的一个入门小例子,很小,希望对你有所帮助,不好别骂!
Lucene使用的一个小Demo,有兴趣的可以下来看看,入门级
Lucene入门文档,包含索引的创建、查询、更新以及删除demo,各个常用类的详解
Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。Lucene以其方便使用、快速实施以及灵活性受到广泛的关注。它可以方便地嵌入到各种应用中实现针对应用的全文索引、检索功能,本总结使用lucene--...
Android新控件ViewPager2入门示例 Android仿闲鱼底部导航栏 安卓阿里开源ARouterDemo Android使用RecyclerView播放视频列表 Android桌面图标和App名字 Android解决滑动冲突JavaEE JavaEE中Lucene入门程序 Struts2
初学lucene的同学可以参照一下,代码中整理了一些说明,可以很快入门lucene,希望对大家有用!
和声2 Grails Hibernate 搜索插件 这个插件旨在通过几个步骤将 ...~/.grails/${grailsVersion}/projects/${yourProjectName}/lucene-index/development/ 您可以在 application.yml 中覆盖此配置 hibern
为了方便开发者快速入门索引接口的使用,我们制作了不同WEB开发语言(asp,jsp,php,.net)的索引接口开发事例,请参考demo目录中的相关文件。 索引接口开发完毕后,通过修改您原来的数据添加程序,在添加数据库后,...
Solr & Elasticsearch | 分布式全文搜索引擎 | [http://lucene.apache.org/solr/](http://lucene.apache.org/solr/) [https://www.elastic.co/](https://www.elastic.co/) Quartz | 作业调度框架 | ...
7.1. Zend_Controller 快速入门 7.1.1. 简介 7.1.2. 入门 7.1.2.1. 文件系统的组织结构 7.1.2.2. 设置文件根目录 7.1.2.3. 创建URL重写规则 7.1.2.4. 创建你的bootstrap文件 7.1.2.5. 创建默认的控制器...