读书人

lucene3.5 学习札记01

发布时间: 2012-09-04 14:19:30 作者: rapoo

lucene3.5 学习笔记01
最近在看这方面的知识,初学者一起分享

public class LuceneTest {    File filePath = new File("D:\\uploadfiles");     File indexPath = new File("D:\\luceneIndex");      //创建分词器    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);    //建立索引的配置类,包含了一个解析器    IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35, analyzer).setOpenMode(OpenMode.CREATE);                    public void indexMethod(IndexWriter writer, File file) throws Exception{    if(file.isDirectory()){        String[] files = file.list();    for(int i=0;i<files.length;i++){    indexMethod(writer,new File(file,files[i]));    }    }else{    FileInputStream fis = new FileInputStream(file);    Document doc  = new Document();    doc.add(new Field("name",file.getName(),Store.YES,Index.ANALYZED));//    doc.add(new Field("content",new BufferedReader(new InputStreamReader(fis, "UTF-8"))));    doc.add(new Field("content",ToolUtilFile.fileToStringUtil(file),Store.YES,Index.ANALYZED));        doc.add(new Field("size",String.valueOf(file.length()),Store.YES,Index.ANALYZED_NO_NORMS));    doc.add(new Field("path",file.getAbsolutePath(),Store.YES,Index.ANALYZED_NO_NORMS));    writer.addDocument(doc);            }    }        public void searchMethod() throws Exception{    //获取查询    Directory directory = FSDirectory.open(indexPath);      IndexReader reader = IndexReader.open(directory);    IndexSearcher searcher = new IndexSearcher(reader);      //把要搜索的文本解析为Query      String queryString = "hello";     String[] fields = {"name","content"};        QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_35, fields, analyzer);    Query query = parser.parse(queryString);    TopDocs topDocs = searcher.search(query, null, 10000);//topDocs 类似集合      System.out.println("总共有【"+topDocs.totalHits+"】条匹配结果.");     //输出              for(ScoreDoc scoreDoc:topDocs.scoreDocs){          int docSn = scoreDoc.doc;//文档内部编号          Document doc = searcher.doc(docSn);//根据文档编号取出相应的文档          File2Document.printDocumentInfo(doc);//打印出文档信息                    }    }                @Testpublic void createIndex() throws Exception{ Directory dir = FSDirectory.open(indexPath);    IndexWriter writer = new IndexWriter(dir, iwc); indexMethod(writer,filePath); writer.close();}@Testpublic void searchIndex() throws Exception{searchMethod();}}

读书人网 >编程

热点推荐