建立索引程序:
/*
* 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 等文件需要经过转化才能对其进行索引。
-------------------------------
说明: 来源网络
分享到:
相关推荐
首先,实例化Directory对象(如FSDirectory)来存储索引,然后创建Analyzer处理文本,接着使用IndexWriter创建和更新索引,最后使用IndexSearcher进行查询。`lucene-2.0.0`可能包含其他的库文件,如示例代码、API...
《lucene2.0+heritrix 随书光盘》是针对搜索引擎技术的一个资源集合,其中包含了Lucene 2.0和Heritrix的相关示例及教程。Lucene是一款强大的全文检索库,而Heritrix则是一个互联网爬虫工具,它们在构建搜索引擎时起...
结合Lucene和Heritrix,开发者可以构建一个完整的搜索引擎系统,首先使用Heritrix爬取网络内容,然后用Lucene建立索引,最终实现快速、精准的搜索功能。随书光盘中的资源可能包括源代码、示例项目、教程文档等,帮助...
总结一下,Lucene 2.0 提供了高效且易于使用的文本索引和搜索功能。通过 `IndexWriter` 可以构建索引,`Document` 和 `Field` 用于结构化数据的表示,而 `IndexSearcher` 和 `QueryParser` 则用于执行搜索操作。这些...
在Lucene 2.0及更高版本中,废弃了一些旧版本中的方法,如Field类的构造函数和一些静态方法。这要求开发者在使用时必须注意版本兼容性问题,确保使用的API与所安装的Lucene版本匹配。 ### Lucene的入门实例 #### ...
- **编写索引代码**:使用 Lucene.Net API 编写代码来读取文档并将其添加到索引中。 - **优化索引性能**:合理设置索引参数以提高搜索效率。 下面是一个简单的示例代码,展示如何创建索引: ```csharp public ...
Lucene.Net 2.9.2 版本是这个项目的其中一个稳定版本,提供了对 .NET Framework 的全面支持,包括对.NET 2.0 及以上版本的兼容。 **一、Lucene.Net 概述** 1. **核心概念**:Lucene.Net 基于倒排索引(Inverted ...
4. **内存与磁盘索引**:支持在内存和磁盘上建立索引,平衡性能与资源消耗。 5. **文档存储**:不仅可以索引文本,还可以存储非文本信息,如图片、PDF 文件等。 6. **多线程支持**:支持并发读写,适用于高并发场景...
“lucene-core-2.0.0.rar”文件可能包含了Lucene 2.0版本的主要库文件,包括API文档、示例代码和必要的依赖库,这可以帮助开发者理解和使用这个早期版本的Lucene。 “地址及工具介绍.txt”文件很可能是对这两个项目...
在测试自定义添加数据后点击建立索引按钮才能生效(此功能由51aspx添加),原版只检索目录下的html文件,51Aspx改为了检索所有文件 1) Indexer文件夹:索引命令源码 其下包括文件目录 - Indexer - lib 2) ...
Compass 是一个强大的开源搜索引擎框架,它建立在 Lucene 的基础之上,为 Java 开发者提供了更为简洁的搜索引擎 API。Compass 的设计目标是简化搜索引擎的集成,使其能够无缝地与现有的应用程序,如 Hibernate 和 ...
这可能涉及到对RSS条目的索引和存储策略,以优化查询性能和空间利用率。 3. **搜索功能**:类库包含了RSS feed的全文搜索功能,允许用户根据关键词查找相关条目。这可能依赖于搜索引擎集成,例如Lucene,以实现高效...
开源项目通常遵循特定的许可协议,如MIT、Apache 2.0或GPL等,以确保社区的贡献和合规使用。开源项目鼓励协作开发,促进技术共享,有助于技术的快速进步。 在"async-elastic-orm-master"这个文件名中,"master"通常...
- **创建搜索索引**:建立索引以加速搜索过程。 - **搜索引擎配置**:定制搜索结果的排序和过滤规则。 通过以上介绍,可以看出OpenCMS不仅具备强大的内容管理能力,还能通过扩展插件和自定义代码实现更多高级功能。...