具体步骤:
1 创建Directory
2 创建IndexReader
3 根据IndexReader创建IndexSearcher
4 创建搜索的Query
5 根据searcher搜索并且返回TopDocs
6 根据TopDocs获取ScoreDoce对象
7 根据searcher和ScoreDoc对象获取具体的Document对象
8 根据Document对象获取需要的值
public void searcher(){
try {
//1 创建Directory
Directory directory = FSDirectory.open(new File("d:/lucene/index01"));
//2 创建IndexReader
IndexReader reader =IndexReader.open(directory);
//3 根据IndexReader创建IndexSearcher
IndexSearcher indexSearcher=new IndexSearcher(reader);
//4 创建搜索的Query
//创建parser来确定要搜索文件的内容,第二个参数表示要搜索的域
QueryParser queryParser= new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));
//创建query,表示搜索域为content中包含java的文档
Query query = queryParser.parse("java"); //搜索包含java的文件
//5 根据searcher搜索并且返回TopDocs
TopDocs tds =indexSearcher.search(query,10); //搜索10条
//6 根据TopDocs获取ScoreDoce对象
ScoreDoc[] sds = tds.scoreDocs;
for(ScoreDoc sd:sds){
//7 根据searcher和ScoreDoc对象获取具体的Document对象
Document d=indexSearcher.doc(sd.doc);
//8 根据Document对象获取需要的值
System.out.println(d.get("filename")+"["+d.get("path"));
}
//9 关闭reader
reader.clone();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
测试:
@Test
public void testSearch(){
HelloLucene h1= new HelloLucene();
h1.searcher();
}