文件放在F:/lucene/lucenes
package org.lucene;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
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.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.util.Version;
public class demo {
/*
* 创建索引
*/
IndexWriter writer =null;
public void index()
{
try {
//创建directory
Directory directory=FSDirectory.open(new File("f:/lucene/Index01"));
// Directory directory=new RAMDirectory();//建立在内存中
//创建IndexWriter
IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
writer=new IndexWriter(directory, iwc);
//创建document对象
Document doc=null;
//为document添加field
File f=new File("f:/lucene/lucenes");
for(File file:f.listFiles())
{
doc=new Document();
doc.add(new Field("content", new FileReader(file)));
doc.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED ));
doc.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
//通过IndexWriter将document添加到索引中
writer.addDocument(doc);
}
}catch (CorruptIndexException e) {
e.printStackTrace();
// TODO: handle exception
}catch (LockObtainFailedException e) {
e.printStackTrace();
// TODO: handle exception
}catch (IOException e) {
e.printStackTrace();
// TODO: handle exception
}finally{
try {
if(writer!=null)
writer.close();
}catch (CorruptIndexException e2) {
e2.printStackTrace();
// TODO: handle exception
}catch (IOException e2) {
e2.printStackTrace();
// TODO: handle exception
}
}
}
/*
* 创建索引
*/
public void serch()
{
try {
//1.创建Directory
Directory directory=FSDirectory.open(new File("f:/lucene/Index01"));
//2.创建IndexReader
IndexReader reader=IndexReader.open(directory);
//3.根据IndexReader创建IndexSercher
IndexSearcher sercher=new IndexSearcher(reader);
//4.创建搜索的Quary
//创建parse来确定搜索文件的内容,第二个参数是搜索的域
QueryParser parser=new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));
//创建quary,表示搜索域为content包含name的内容
Query quary=parser.parse("ask");
//5.根据色弱sercher搜索并返回TopDocs
TopDocs tds=sercher.search(quary, 10);//10表示显示10条搜索结果
//6.根据TopDocs获取ScoreDoc对象
ScoreDoc[] sds=tds.scoreDocs;
for (ScoreDoc sd:sds) {
//7.根据sercher对象和Scoredoc对象获取Document对象
Document d=sercher.doc(sd.doc);
//8.根据Document对象获取需要的值
System.out.println(d.get("filename")+"["+d.get("path")+"]");
}
//9.关闭reader
reader.close();
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
}
测试类
package org.lucene;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.junit.*;
public class TestLucene {
@Test
public void testIndex()
{
demo d=new demo();
d.index();
}
@Test
public void testSercher()
{
demo d=new demo();
d.serch();
}
/*public void check() throws IOException{ //检查索引是否被正确建立(打印索引)
Directory directory = FSDirectory.open(new File("f:/lucene/Index01/"));//创建directory,其储存方式为在
IndexReader reader = IndexReader.open(directory);
for(int i = 0;i<reader.numDocs();i++){
System.out.println(reader.document(i));
}
reader.close();
}*/
public static void main(String[] args) {
new TestLucene().testIndex();
new TestLucene().testSercher();
}
}
分享到:
相关推荐
Lucene3总体图_建索引_查询_数据库索引[参考].pdf
lucene3针对数据库索引操作,示例源码+解读。
一个vb.net2.0做的Lucene索引测试 vb.net的东西比较少吧,我上一个
基于lucene技术的增量索引,实现索引的首次创建,动态增删改
Lucene.Net是一个搜索引擎库,C#编写的。NET运行时用户和有针对性的。Lucene搜索库是基于倒排索引。Lucene.Net有三个主要目标: 1.保持现有生产线,由线端口从Java到C#,完全自动化和商品化的过程中,该项目可以...
Lucene创建索引,查询索引的简单使用。
Lucene索引器实例Lucene索引器实例Lucene索引器实例Lucene索引器实例
Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 http://blog.csdn.net/nupt123456789/article/details/10666105
lucene 对 xml建立索引 建立索引就是怎么简单 呵呵
资源名称:Lucene实战视频教程资源目录:【】01_lucenc简介和创建索引初步【】02_lucene简介和搜索初步【】03_lucene索引_创建_域选项【】04_lucene索引_的删除和更新【】05_lucene索引_加权操作和Luke的简单演示...
lucene 索引 查看 工具
lucene索引查看工具及源码lucene索引查看工具及源码lucene索引查看工具及源码
lucene+zoie近实时索引demo lucene+zoie近实时索引demo
Lucene3.0创建索引 读取目录下的所有txt文档格式的文件,然后生成一个索引文件到某目录下!
深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制
lucene高级搜索进阶项目_04
Lucene_in_Action(中文版).pdf Lucene in Action(中文版) ----------------------------------------- Lucene in Action 中文版 第一部分 Lucene 核心 1. 接触 Lucene 2. 索引 3. 为程序添加搜索 4. ...
在Eclipse环境中运用java,Lucene建索引及查询关键字
Lucene_索引数据库.doc
lucene索引结构原理