一个lucene的例子 , 其它的就不多说了
package com.fei.lucene;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
/**
* test lucene
*
* @author
*
*/
public class TxtFileIndexer {
/**
* @param args
*/
public static void main(String[] args) throws IOException {
// 保存索引文件的地方
String indexDir = "E:\\indexDir";
// 将要搜索TXT文件的地方
String dataDir = "E:\\dataDir";
TxtFileIndexer ifi = new TxtFileIndexer();
ifi.createIndex(indexDir, dataDir);
try {
ifi.searchIndex(indexDir);
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 通过索引查找
*
* @throws IOException
* @throws ParseException
*/
public void searchIndex(String indexDir) throws IOException, ParseException {
// 得到保存索引的Directory
Directory dir = new SimpleFSDirectory(new File(indexDir));
// IndexSearcher对象
IndexSearcher indexSearch = new IndexSearcher(dir);
StandardAnalyzer sa = new StandardAnalyzer(Version.LUCENE_31);
// 创建QueryParser对象,第二个表示搜索Field的字段
String[] fields = new String[] { "contents", "filename" };
QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_31,
fields, sa);
// QueryParser queryParser = new QueryParser(Version.LUCENE_31,
// "filename", sa);
// 生成Query对象
Query query = queryParser.parse("森");
// 搜索结果 TopDocs里面有scoreDocs[]数组,里面保存着索引值
TopDocs hits = indexSearch.search(query, 10);
// hits.totalHits表示一共搜到多少个
System.out.println("找到了" + hits.totalHits + "个");
// 循环hits.scoreDocs数据,并使用indexSearch.doc方法把Document还原
ScoreDoc[] scoreDocs = hits.scoreDocs;
int lenScoreDoc = scoreDocs.length;
for (int i = 0; i < lenScoreDoc; i++) {
ScoreDoc sdoc = scoreDocs[i];
Document doc = indexSearch.doc(sdoc.doc);
System.out.println(doc.get("filename"));
//不清楚这里怎么从doc里面拿出contents, 不过这里有文件文件名, 还有路径, 就可读取出文件的内容
System.out.println(doc.get("contents"));
Field ff = doc.getField("contents");
}
indexSearch.close();
}
/**
* 建索引
*
* @throws IOException
*/
public void createIndex(String indexDir, String dataDir) throws IOException {
IndexWriter indexWriter = null;
// 创建Directory对象
Directory dir = new SimpleFSDirectory(new File(indexDir));
// 创建IndexWriter对象, 第二个是分词器, 第三个表示是否是创建,false
// 为在此基础上面修改, 第四表示表示分词的最大值,比如说new MaxFieldLength(2), 就表示两个字一分,
// 一般用indexWriter.MaxFieldLength.LIMITED
indexWriter = new IndexWriter(dir, new StandardAnalyzer(
Version.LUCENE_31), true, IndexWriter.MaxFieldLength.UNLIMITED);
File[] files = new File(dataDir).listFiles();
for (int i = 0; i < files.length; i++) {
Document doc = new Document();
// 创建Field对象, 并放入doc对象中
doc.add(new Field("contents", new FileReader(files[i])));
// Field.Index.ANALYZED 建立index标识符通过分词器()
doc.add(new Field("filename", files[i].getName(), Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("indexDate", DateTools.dateToString(new Date(),
DateTools.Resolution.DAY), Field.Store.YES,
Field.Index.NOT_ANALYZED));
indexWriter.addDocument(doc);
}
System.out.println("numDocs:" + indexWriter.numDocs());
indexWriter.close();
}
}
分享到:
相关推荐
这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 Lucene的核心概念包括索引、文档、字段和查询。首先,你需要理解索引的概念,它类似于传统数据库中的索引,但...
lucene入门例子,有创建索引和检索。详情:http://blog.csdn.net/authorzhh/article/details/7869806
**Lucene 2.4 入门例子** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用中的信息检索。在这个入门例子中,我们将探讨Lucene 2.4版本的一些关键特性和...
在这个经典Lucene入门模块中,我们将深入理解如何使用Lucene进行索引创建和搜索操作。 首先,我们来看Lucene如何建立数据的索引。这通常涉及以下几个步骤: 1. **索引创建**:使用 `IndexWriter` 对象来创建或更新...
本篇将通过一个简单的入门例子,带你了解如何使用Lucene进行搜索。 首先,我们要知道Lucene的核心组件包括文档(Document)、字段(Field)、索引(Index)和查询(Query)。在Lucene中,信息是以文档的形式存储,...
Lucene5.2.1 入门学习例子. 这是别人的例子源码。可以参考。内有使用说明。
《Lucene实战(第2版) PDF高清中文版.pdf》这本书是关于Apache Lucene的一本经典教程,适合初学者入门。Lucene是一个全文搜索引擎库,它提供了强大的文本搜索功能,被广泛应用于各种信息检索系统中。这本书详细介绍了...
doc.add(new Field("title", "Lucene入门", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("content", "这是Lucene 3.0的实例", Field.Store.YES, Field.Index.ANALYZED)); ``` 3. **查询...
**Lucene入门示例** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它是Java语言实现的,但提供了多种语言的接口,包括Python、C#等。本示例将帮助初学者理解Lucene的基本用法,以及如何在实际...
lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子程序.txt 关于lucene2.0的创建、检索和删除功能的完整实现.doc web...
这里提供了一个简单的例子,包括一个`DataFactory`类,用于模拟存储药品信息,以及一个`LuceneIKUtil`类,用于实现Lucene索引和搜索功能。`DataFactory`包含了一个`List<Medicine>`,每个`Medicine`对象包含了药品ID...
本文将基于"solr_开发入门例子"这一主题,详细解释Solr的基础知识,包括其核心概念、安装配置、索引创建与查询,以及相关的开发工具。 1. **Solr核心概念** - **索引**: Solr通过建立倒排索引来实现快速全文检索。...
### Lucene的入门实例 #### 建立索引 1. **包导入**:首先,需要导入Lucene相关的包,包括`java.io`用于文件操作,`org.apache.lucene.analysis`用于文本分析,`org.apache.lucene.document`用于创建文档对象,...
这个压缩包提供的"lucene第一天"是一系列入门教程,旨在帮助初学者快速理解并掌握Lucene的核心概念和基本操作。 首先,让我们了解一下Lucene的基本组件和工作原理。Lucene的核心功能是索引和搜索文本数据。它将非...
这个示例是入门Lucene的首选,它展示了如何创建一个新的索引并执行基本的搜索。首先,你需要定义一个`Document`对象,包含要索引的字段,如标题、内容等。然后使用`Directory`(如`FSDirectory`)打开存储索引的...
在《开发自己的搜索引擎》一书中,通过`ch2-lucene入门小例子`,读者可以了解到如何使用Lucene 2.0创建简单的搜索引擎,例如建立索引、执行搜索等基本操作。而`myReserch-可用的网络搜索引擎`可能包含一个完整的搜索...
《Lucene in Action》第二版是一本不可多得的Lucene学习宝典,它不仅内容丰富、实用性强,而且涵盖了从入门到精通的各个阶段。无论是作为个人学习资料还是作为专业开发者的参考书,本书都能够提供有价值的指导和支持...
lucene实例是一个比较详细的例子,包括lucene的入门到高级实例,代码里有比较详细的实例,所有的实例都是通过junit来测试的。实例包括各种搜索:如通配符查询、模糊查询、查询结果的分页、中文分词器、自定义分词器...