1、创建索引
public void Index()
{
IndexWriter iw = null;
try
{
/**
* 1、创建文件目录
*/
// Directory directory=new RAMDirectory();//建立在内存中
Directory directory = FSDirectory.open(new File(
"c:/lucene/indexhello"));// 搜索存储在硬盘上
/**
* 2、创建索引配置
*/
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35,
new StandardAnalyzer(Version.LUCENE_35));
/**
* 3、创建IndexWriter
*/
iw = new IndexWriter(directory, iwc);
/**
* 4、创建Document
*/
Document doc = null;
/**
* 5、为Document添加filed
*/
File files = new File("c:/lucene/search");
for (File file : files.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));
/**
* 6、通过IndexWriter将文档添加到索引中
*/
iw.addDocument(doc);
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
if (iw != null)
try
{
iw.close();// IndexWriter流必须关闭
} catch (CorruptIndexException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
2、遍历索引
public void Serach()
{
IndexReader ir = null;
try
{
/**
* 1、创建文件目录
*/
Directory directory = FSDirectory.open(new File(
"c:/lucene/indexhello"));// 搜索存储在硬盘上
/**
* 2、创建IndexReader
*/
ir = IndexReader.open(directory);
/**
* 3、根据IndexReader创建IndexSearcher
*/
IndexSearcher search = new IndexSearcher(ir);
/**
* 4、创建Query new QueryParser(1,2,3) 第二个参数传入的字段名
*/
QueryParser parser = new QueryParser(Version.LUCENE_35, "content",
new StandardAnalyzer(Version.LUCENE_35));
/**
* QueryParser.parse(String queryContent)
*/
Query query = parser.parse("java");
/**
* 根据IndexSearcher得到TopDocs
*/
TopDocs Tdoc = search.search(query, 10);
/**
* 根据TopDocs得到ScoreDoc
*/
ScoreDoc[] Sdocs = Tdoc.scoreDocs;
for (ScoreDoc sdoc : Sdocs)
{
/**
* ScoreDoc.doc得到文档ID
* IndexSearcher.doc(int DocID)获取到相应ID的Document
*/
Document doc = search.doc(sdoc.doc);
/**
* 根据Document获取其详细的信息
*/
System.out.println(doc.get("filename") + "[" + doc.get("path")
+ "]");
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
ir.clone();
}
}