`
九牛一毛
  • 浏览: 9876 次
社区版块
存档分类

【直播】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;
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics