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

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

相关推荐

    Javaweb课程作业基于Hadoop的中文词频统计工具源码+使用说明.zip

    1、下载IKAnalyzer2012_u6.zip(最新版) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IKAnalyzer2012_u6.zip 2、由于maven库里没有ik的坐标,所以我们需要手动...

    Lucene4.X 第十五讲-Lucene高级进阶

    目前最新版本是4.3.1. 它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是当前非常流行...

    lucene:基于Java的全文检索引擎简介

    - 下载最新版本的Lucene库。 - 将库文件添加到项目的类路径中。 - 使用Lucene提供的API创建索引、添加文档和执行查询。 #### 5. Hacking Lucene 对于进阶用户而言,Lucene提供了丰富的定制化选项,例如: - **...

    paoding 分词

    &lt;artifactId&gt;paoding-analysis&lt;/artifactId&gt; &lt;version&gt;2.0.4-alpha2&lt;/version&gt; &lt;/dependency&gt; ``` 4. **测试运行** 创建一个简单的Java程序,调用paoding的分词API进行测试,确保环境搭建成功。 **三、核心...

    lucene jar包

    Lucene是一个开源全文搜索引擎库,它提供了高级文本分析和索引功能,使得开发者能够轻松地在应用程序中实现强大的搜索功能。本次我们将围绕“lucene jar包”这一主题,深入探讨Lucene 2.3.1版本的相关知识点。 一、...

    Lucene 3.5 api HTML版

    Lucene 3.5 API 是该库在2011年发布的一个版本,包含了对当时最新特性和改进的支持。 **核心组件** 1. **索引(Indexing)**: Lucene 的索引过程涉及将文档内容转化为可搜索的形式。它包括分析(Analyzer)步骤,...

    Lucene.Net_2_3_2.rar

    总的来说,Lucene.Net 2.3.2是.NET开发人员构建全文搜索引擎的重要工具,尽管它可能不如最新版本那样具备所有现代特性,但在很多场景下仍然足够强大和实用。通过对Lucene.Net的学习和实践,开发者能够构建出高效、...

    Go-go-elasticsearch:Elasticsearch官方的go语言客户端

    ### 1. Go语言介绍 Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的语言。Go语言的设计目标是提高开发效率,简化并发编程,以及优化程序运行性能。由于其简洁的语法和良好...

    开发过程中常用学习资源网站

    在开发过程中,不断学习和掌握新的技术和资源是至关重要的。以下是一些常用的学习资源网站,涵盖了多种编程语言、框架和工具,帮助你提升技能和效率。 1. **Go语言**: - **Golang123Go语言中文网**:提供Go语言的...

    solr in action 英文完整版 meap

    整本书通过对Solr核心知识的介绍和进阶内容的讨论,为读者提供了一套全面的Solr学习资源。无论是初学者还是需要进一步深化Solr应用的专业人士,都能从中获益。在快速发展的技术领域,例如社交媒体、云计算、移动应用...

    小码哥Java学科的课程大纲.docx

    1. **语法基础**:介绍Java的基本语法,包括程序结构、注释、标识符等。 2. **常量与变量**:讲解常量与变量的概念、声明方式以及它们在程序中的作用。 3. **数据类型**:详细介绍Java中的各种数据类型(如基本类型...

    es

    它基于Lucene库构建,提供了一种分布式、RESTful风格的搜索和数据分析引擎,广泛应用于日志分析、网站搜索、业务监控等领域。 在描述中同样只有简短的"es",我们可以假设这指的是Elasticsearch的相关内容,但由于...

Global site tag (gtag.js) - Google Analytics