/** * 建立索引 * */ public void index(){ IndexWriter indexWriter=null; try { // 需要的分词器 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47); // 创建的是哪个版本的IndexWriterConfig IndexWriterConfig indexWriterConfig = new IndexWriterConfig( Version.LUCENE_47, analyzer); // 创建系统文件----- ./ 当前路径下的 //Directory directory = new RAMDirectory();//建立在内存中 Directory directory = FSDirectory.open(new File("e:/lucene/test/index01")); indexWriter = new IndexWriter(directory,indexWriterConfig); //获取Document Document doc = null; File file = new File("e:/lucene/example"); for(File f:file.listFiles()){ doc = new Document(); doc.add(new TextField("content", new FileReader(f))); doc.add(new StringField("filename", f.getName(), Store.NO)); doc.add(new StringField("filepath", f.getPath(), Store.NO)); //添加到索引中去 indexWriter.addDocument(doc); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(indexWriter!=null){ try { indexWriter.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public void search(){ IndexReader reader = null; try { String filePath="e:/lucene/test/index01"; Directory dir=FSDirectory.open(new File(filePath)); reader = DirectoryReader.open(dir); IndexSearcher searcher=new IndexSearcher(reader); Term term=new Term("content", "java"); TermQuery query=new TermQuery(term); TopDocs topdocs=searcher.search(query, 5); ScoreDoc[] scoreDocs=topdocs.scoreDocs; System.out.println("查询结果总数---" + topdocs.totalHits+"最大的评分--"+topdocs.getMaxScore()); for(int i=0; i < scoreDocs.length; i++) { int doc = scoreDocs[i].doc; Document document = searcher.doc(doc); System.out.println("content===="+document.get("content")); System.out.println("id--" + scoreDocs[i].doc + "---scors--" + scoreDocs[i].score+"---index--"+scoreDocs[i].shardIndex); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ if(reader != null){ try { reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }