读书人

lucene入门学习(1)

发布时间: 2012-11-20 09:55:43 作者: rapoo

lucene入门学习(一)

public class LuceneUtil {/** * 创建索引 * @throws IOException  */public void index() {//2.创建IndexWriter(用来添加索引)IndexWriter indexWriter = null;try {//1.创—irectory//Directory directory = new RAMDirectory();   创建在内存中Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));  //创建在硬盘上//2.创建IndexWriterAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);   //创建标准的分词器IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);indexWriter = new IndexWriter(directory,iwc);//3.创—ocument对象(一个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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/** * 搜索 */public void search() {try {//1.创—irectoryDirectory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));//2.创建IndexReaderIndexReader reader = IndexReader.open(directory);//3.根据IndexReader创建IndexSearchIndexSearcher 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搜索并且返回TopDocsTopDocs 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.关闭readerreader.close();} catch (Exception e) {// TODO: handle exception}}}

?

读书人网 >编程

热点推荐