lucene 索引的操作

/**
	 * 建立索引
	 * */
	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();
				}  
			}
		} 
        
	}

 删除

恢复删除

强制删除

优化合并

更新索引

猜你喜欢

转载自261304870.iteye.com/blog/2046097