`

用Lucene 2.0建立索引及查询示例

阅读更多
建立索引程序:
/*
 * Created on 2004-4-26
 */

import org.apache.lucene.index.*;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.document.*;
import java.io.*;

public class IndexFiles {

	public static void main(String[] args) {
		try {
			IndexWriter writer = new IndexWriter("/myindex",
					new StandardAnalyzer(), true);

			File files = new File("mydoc");
			String[] Fnamelist = files.list();
			for (int i = 0; i < Fnamelist.length; i++) {
				File file = new File(files, Fnamelist[i]);

				Document doc = new Document();
				Field fld = new Field("path",file.getPath(),Field.Store.YES,Field.Index.NO);
//				Field fld = Field.Text("path", file.getPath());
				doc.add(fld);
				fld = new Field("modified",DateField.timeToString(file.lastModified()),Field.Store.YES,Field.Index.NO);
//				fld = Field.Keyword("modified", DateField.timeToString(file
//						.lastModified()));
				doc.add(fld);

				FileInputStream in = new FileInputStream(file);
				Reader reader = new BufferedReader(new InputStreamReader(in));
				fld = new Field("contents",reader);
//				fld = Field.Text("contents", reader);
				doc.add(fld);

				writer.addDocument(doc);
				System.out.println("Added : " + doc.get("path"));

			}
			writer.optimize();
			writer.close();
			System.out.println("Has Added Total: " + Fnamelist.length);
		} catch (Exception e) {
			System.out.println(e);
		}
	}
}

程序对当前路径下mydoc目录下所有文件建立索引,其中索引有三个字段: 文件路径,
最后修改时间,文件内容.  建立的索引文件在当前路径下的myindex目录

检索程序:
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.TermQuery;

/**
 * @author Sivyer
 * 
 */
public class SearchFile {

	public static void main(String[] args) {

		// XMap a = new XMap("");
		Analyzer anlzr = new StandardAnalyzer();
		try {
			
			
//			Query q = QueryParser.parse("数据库", "contents", anlzr);
			Query q = makeQuery("readme.txt");
			System.out.println("Searching for : " + q.toString("contents"));

			Searcher serch = new IndexSearcher("/myindex");
			Hits hts = serch.search(q);
			for (int i = 0; i < hts.length(); i++) {
				Document doc = hts.doc(i);
				String path = doc.get("path");
				System.out.println("Find: " + i + ": " + path);
				System.out.println("Find: " + doc.get("modified"));
				System.out.println("Find: " + doc.get("path"));
			}
			System.out.println("Find Total: " + hts.length());
		} catch (Exception e) {
			System.out.println(e);
		}
	}
	public static Query makeQuery(String query) {
		TermQuery qu = new TermQuery(new Term("all", query.toLowerCase()));
		return qu;
	}
}


程序对索引的contents字段用“数据库“关键字进行查询,返回
的是所有包含有关键字的文档集合,分别打印出各个字段.

上面的程序我用纯文本文件测试通过,.txt,.jsp,.html 都可以,
word,pdf 等文件需要经过转化才能对其进行索引。

-------------------------------
说明: 来源网络
分享到:
评论

相关推荐

    lucene-2.0

    首先,实例化Directory对象(如FSDirectory)来存储索引,然后创建Analyzer处理文本,接着使用IndexWriter创建和更新索引,最后使用IndexSearcher进行查询。`lucene-2.0.0`可能包含其他的库文件,如示例代码、API...

    lucene2.0+heritrix 随书光盘

    《lucene2.0+heritrix 随书光盘》是针对搜索引擎技术的一个资源集合,其中包含了Lucene 2.0和Heritrix的相关示例及教程。Lucene是一款强大的全文检索库,而Heritrix则是一个互联网爬虫工具,它们在构建搜索引擎时起...

    Lucene2.0+Heritrix搜索引擎 随书光盘

    结合Lucene和Heritrix,开发者可以构建一个完整的搜索引擎系统,首先使用Heritrix爬取网络内容,然后用Lucene建立索引,最终实现快速、精准的搜索功能。随书光盘中的资源可能包括源代码、示例项目、教程文档等,帮助...

    重要lucene2.0 学习文档

    总结一下,Lucene 2.0 提供了高效且易于使用的文本索引和搜索功能。通过 `IndexWriter` 可以构建索引,`Document` 和 `Field` 用于结构化数据的表示,而 `IndexSearcher` 和 `QueryParser` 则用于执行搜索操作。这些...

    Lucene简单实例记录

    在Lucene 2.0及更高版本中,废弃了一些旧版本中的方法,如Field类的构造函数和一些静态方法。这要求开发者在使用时必须注意版本兼容性问题,确保使用的API与所安装的Lucene版本匹配。 ### Lucene的入门实例 #### ...

    Lucene.Net实现全文搜索

    - **编写索引代码**:使用 Lucene.Net API 编写代码来读取文档并将其添加到索引中。 - **优化索引性能**:合理设置索引参数以提高搜索效率。 下面是一个简单的示例代码,展示如何创建索引: ```csharp public ...

    Lucene.Net 2.9.2源码包(有Demo)

    Lucene.Net 2.9.2 版本是这个项目的其中一个稳定版本,提供了对 .NET Framework 的全面支持,包括对.NET 2.0 及以上版本的兼容。 **一、Lucene.Net 概述** 1. **核心概念**:Lucene.Net 基于倒排索引(Inverted ...

    Lucene.Net_2_4_0.rar

    4. **内存与磁盘索引**:支持在内存和磁盘上建立索引,平衡性能与资源消耗。 5. **文档存储**:不仅可以索引文本,还可以存储非文本信息,如图片、PDF 文件等。 6. **多线程支持**:支持并发读写,适用于高并发场景...

    Java检索引擎

    “lucene-core-2.0.0.rar”文件可能包含了Lucene 2.0版本的主要库文件,包括API文档、示例代码和必要的依赖库,这可以帮助开发者理解和使用这个早期版本的Lucene。 “地址及工具介绍.txt”文件很可能是对这两个项目...

    DotLucene演示源码.rar

    在测试自定义添加数据后点击建立索引按钮才能生效(此功能由51aspx添加),原版只检索目录下的html文件,51Aspx改为了检索所有文件 1) Indexer文件夹:索引命令源码 其下包括文件目录 - Indexer - lib 2) ...

    Compass学习文档1

    Compass 是一个强大的开源搜索引擎框架,它建立在 Lucene 的基础之上,为 Java 开发者提供了更为简洁的搜索引擎 API。Compass 的设计目标是简化搜索引擎的集成,使其能够无缝地与现有的应用程序,如 Hibernate 和 ...

    RSS聚合类库:INFORMA

    这可能涉及到对RSS条目的索引和存储策略,以优化查询性能和空间利用率。 3. **搜索功能**:类库包含了RSS feed的全文搜索功能,允许用户根据关键词查找相关条目。这可能依赖于搜索引擎集成,例如Lucene,以实现高效...

    wuic-jee-0.4.2.zip

    开源项目通常遵循特定的许可协议,如MIT、Apache 2.0或GPL等,以确保社区的贡献和合规使用。开源项目鼓励协作开发,促进技术共享,有助于技术的快速进步。 在"async-elastic-orm-master"这个文件名中,"master"通常...

    opencms资料

    - **创建搜索索引**:建立索引以加速搜索过程。 - **搜索引擎配置**:定制搜索结果的排序和过滤规则。 通过以上介绍,可以看出OpenCMS不仅具备强大的内容管理能力,还能通过扩展插件和自定义代码实现更多高级功能。...

Global site tag (gtag.js) - Google Analytics