Lucene的使用
在全文索引工具中,由以下3个部分组成:
1、索引部分
2、分词部分
3、搜索部分
一、创建索引
/** * 建立索引 */public void index(){IndexWriter writer=null;try {//1、创—irectory//Directory directory=new RAMDirectory();//创建在内存中Directory directory=FSDirectory.open(new File("E:/luceneWorkspace/test/index01"));//创建在硬盘上//2、创建IndexWriterIndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_36, new StandardAnalyzer(Version.LUCENE_36));writer=new IndexWriter(directory, iwc);//3、创—ocument对象Document doc=null;//4、为Document添加FieldFile f=new File("E:/luceneWorkspace/test/example");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));//5、通过IndexWriter添加问writer.addDocument(doc);}} catch (Exception e) {e.printStackTrace();}finally{if(writer!=null){try {writer.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}
二、搜索
/** * 搜索 */public void searcher(){try {//1、创—irectoryDirectory directory=FSDirectory.open(new File("E:/luceneWorkspace/test/index01"));//2、创建IndexReaderIndexReader reader=IndexReader.open(directory);//3、根据IndexReader创建IndexSearcherIndexSearcher searcher=new IndexSearcher(reader);//4、创建搜索的Query//创建parser来确定要搜索文件的内容,第二个参数表示搜索的域QueryParser parser=new QueryParser(Version.LUCENE_36, "content", new StandardAnalyzer(Version.LUCENE_36));//创建query,表示搜索喻为content中包含java的文档Query query=parser.parse("permissions");//5、根据searcher搜索并且返回TopDocs 10表示10条数据TopDocs tds=searcher.search(query, 10);//6、根据TopDocs获取ScoreDocScoreDoc[] sds=tds.scoreDocs;for (ScoreDoc scoreDoc : sds) {//7、根据searcher和ScoreDoc对象获取具体Document对象Document d=searcher.doc(scoreDoc.doc);//8、根据Document对象获取需要的值System.out.println(d.get("filename")+"-------"+d.get("path"));}//9、关闭readerreader.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
- 1楼ZW_Ren3天前 09:28
- 分词部分呢?
- Re: weibinbinlove3天前 10:49
- 回复ZW_Renn分词部分在接下来的文章里面会详细写道