读书人

【直播】Lucene学习进阶-程序篇1lt;最新

发布时间: 2012-07-15 20:11:36 作者: rapoo

【直播】Lucene学习进阶--程序篇1<最新版>

/** * V Lucene 3.5 * 创建索引 */public static void createIndex(){File indexDir = new File(LUCENEINDEX);File dataDir = new File(LUCENEDATA);Analyzer luceneAnalyzer = new StandardAnalyzer(Version.LUCENE_35);File[] dataFiles = indexDir.listFiles();IndexWriter indexWriter = null;try {/** * indexWriter= new IndexWriter(SimpleFSDirectory.open(dataDir),luceneAnalyzer, true,IndexWriter.MaxFieldLength.LIMITED); * 在最新版中这种方式已被不使用。 * 现在使用下面的方式创建indexWriter */IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_35, luceneAnalyzer);indexWriter= new IndexWriter(SimpleFSDirectory.open(dataDir), indexWriterConfig);long startTime = new Date().getTime();//注意:filed实例在多次添加的时候可以重用,节约构造field实例的时间。            Field f1 = new Field("name", "", Field.Store.YES, Field.Index.NOT_ANALYZED) ;            Field f2 = new Field("path", "", Field.Store.YES, Field.Index.NOT_ANALYZED) ;                        List<FilePojo> result = tree(indexDir);            for (FilePojo po : result) {                String name = po.getName();                String path = po.getPath();                try {System.out.println("Indexing file: " + path);Document doc = new Document();f1.setValue(name);doc.add(f1);f2.setValue(path);doc.add(f2);indexWriter.addDocument(doc);} catch (IOException e) {e.printStackTrace();}            }//查看IndexWriter里面有多少个索引System.out.println("numDocs:"+indexWriter.numDocs());indexWriter.commit();long endTime = new Date().getTime();System.out.println("耗时:" + (endTime - startTime));} catch (CorruptIndexException e) {e.printStackTrace();} catch (LockObtainFailedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {indexWriter.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}// 递归方法private static List tree(File f) {File[] childs = f.listFiles();for (int i = 0; i < childs.length; i++) {if (childs[i].isDirectory()) {tree(childs[i]);}else if(childs[i].isFile() && childs[i].getName().endsWith(".html")){//执行索引try {FilePojo po = new FilePojo();po.setName(childs[i].getName());po.setPath(childs[i].getCanonicalPath());result.add(po);} catch (IOException e) {e.printStackTrace();}}}return result;}

读书人网 >开源软件

热点推荐