`
zhchx0827
  • 浏览: 191760 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

lucene入门学习(一)

 
阅读更多
public class LuceneUtil {
	/**
	 * 创建索引
	 * @throws IOException 
	 */
	public void index() {
		//2.创建IndexWriter(用来添加索引)
		IndexWriter indexWriter = null;
		try {
			//1.创建Directory
//			Directory directory = new RAMDirectory();   创建在内存中
			Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));  //创建在硬盘上
			
			//2.创建IndexWriter
			Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);   //创建标准的分词器
			IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);
			indexWriter = new IndexWriter(directory,iwc);
			
			//3.创建Document对象(一个document对象就是一个索引)
			Document document = null;
			
			//4.为Document添加Field(位document对象添加搜索的内容)
			File f = new File("D:/workspace/Lucence/document");
			for(File file : f.listFiles()) {
				document = new Document();
				document.add(new Field("content",new FileReader(file)));   //内容搜索
				//
				document.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NO));
				document.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NO));
				//把文档添加到索引中
				indexWriter.addDocument(document);
			}
			//5.通过IndexWriter添加文档到索引中
		} catch(Exception e) {
			
		} finally {
			try {
				indexWriter.close();
			} catch (CorruptIndexException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 搜索
	 */
	public void search() {
		try {
			//1.创建Directory
			Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));
			
			//2.创建IndexReader
			IndexReader reader = IndexReader.open(directory);
			
			//3.根据IndexReader创建IndexSearch
			IndexSearcher search = new IndexSearcher(reader);
			
			//4.创建搜索的Query
			//创建parser要确定搜索的内容
			QueryParser parser = new QueryParser(Version.LUCENE_36,"content",new StandardAnalyzer(Version.LUCENE_36));
			Query query = parser.parse("s h e l l");//搜索内容(content)包含java的文档
			
			//5.根据search搜索并且返回TopDocs
			TopDocs tds = search.search(query, 10);
			
			//6.根据TopDocs获取scoreDocs对象
			ScoreDoc[] sds = tds.scoreDocs;
			for (ScoreDoc scoreDoc : sds) {
				//7.根据search和scoreDocs对象获取具体的Document对象
				Document d = search.doc(scoreDoc.doc);
				//8.根据Document对象获取需要的值
				System.out.println(d.get("filename"));;
			}
			//9.关闭reader
			reader.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics