Lucene 搜索(小程序)(Lucene3.5)

来源:互联网 发布:淘宝管控记录会扣分吗 编辑:程序博客网 时间:2024/06/05 06:27

/*今天看了个搜索的小程序 总结如下

Lucene 执行搜索的步骤:

1...创建Derectory

2...创建IndexReader

3...根据IndexReader创建IndexSearcher

4...创建搜索的Query(查询字符串)

5...根据searcher搜索并且返回TopDocs对象

6...根据TopDocs获取ScoreDoc对象

7....根据searcher和ScoreDoc对象获取具体的Document对象

8...根据Document对象获取需要的值

9...关闭reader

*/

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.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.FSDirectory;import org.apache.lucene.store.IndexInput;import org.apache.lucene.store.IndexOutput;import org.apache.lucene.store.LockObtainFailedException;import org.apache.lucene.store.RAMDirectory;import org.apache.lucene.util.Version;public class HelloLucene {/** * @param args */public static void index()//throws IOException{IndexWriter writer=null;try {//Directory directory=new RAMDirectory() ;//创建在内存中//1.创建DirectoryDirectory directory=FSDirectory.open(new File("g:/lucene/first1") );//创建在硬盘中//2.创建IndexWriter    IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));writer=new  IndexWriter(directory,iwc);//3.创建Document对象Document doc=null;//4.为Document添加FieldFile f=new File("g:/lucene/testFiles");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("filepath",file.getAbsolutePath(), Field.Store.YES, Field.Index.NOT_ANALYZED));//通过IndexWriter添加文档到索引中writer.addDocument(doc);System.out.println(file.getName()+" has Indexed!");}} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (LockObtainFailedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {writer.close();//关闭indextwriter} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void searcher(){try {//1.Directory directory = FSDirectory.open(new File("g:/lucene/first1") );//2.IndexReader reader=IndexReader.open(directory);    //3.IndexSearcher searcher=new IndexSearcher(reader);//4.QueryParser parser=new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));Query query=parser.parse("java");//5.TopDocs tds=searcher.search(query, 20);//6.ScoreDoc [] sds=tds.scoreDocs;for (ScoreDoc sd:sds){//7.Document d=searcher.doc(sd.doc);//8.System.out.println(d.get("filename")+"["+d.get("filepath")+"]");}//9.reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {// TODO Auto-generated method stubindex();searcher();}}


 

 

 

 

*/

//不足 感觉自己看的太慢 得抓紧了

原创粉丝点击