`
cesul
  • 浏览: 31698 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Lucene和IKAnalyzer处理中文:索引、搜索实例

阅读更多
版本:lucene3.02, IKAnalyzer3.20

  检索程序(Indexer.java)实现了对给定文件夹下深度遍历txt文件经行索引。
  通过实例化IndexWriter将new IKAnalyzer(false)作为第二个参数传入。
  在indexFile()中,通过内部类new Field()的形式将索引字段和相应的输入加入Document中。lucene3.*的这一改进须留意。
  特别的,由于处理中文,而对于indexFile()的第二个Reader参数,如果IDE的环境为utf-8,则会让IO流处理中文时得到乱码,所以这里改用InputStreamReader实现。
public class indexer {
	private File baseDir = new File("E:\\");
	private File indexDir = new File("F:\\indexDir");

	public indexer() {
		if (!this.baseDir.exists() || !this.indexDir.exists()) {
			return;
		}
	}

	public void createIndex() {
		try {
			IndexWriter writer = new IndexWriter(
					FSDirectory.open(indexDir),
					new IKAnalyzer(false), 
					true,
					IndexWriter.MaxFieldLength.LIMITED);
			indexDirectory(writer, baseDir);
			writer.optimize(); //优化合并
			writer.close();
			System.out.println("索引完毕");
		} catch (CorruptIndexException e) {
			e.printStackTrace();
		} catch (LockObtainFailedException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private void indexDirectory(IndexWriter writer, File dir) {
		if (!dir.exists() || !dir.isDirectory()) {
			return;
		}
		File[] files = dir.listFiles();
		for (File file : files) {
			if (file.isDirectory()) indexDirectory(writer, file);
			else indexFile(writer, file);
		}
	}

	private void indexFile(IndexWriter writer, File file) {
		if (file.isHidden() || !file.exists() || !file.canRead()) {
			return;
		}
		try {
			if (file.getCanonicalPath().endsWith(".txt")) {
				System.out.println("正在索引:" + file.getCanonicalPath());
				Document doc = new Document();
				doc.add(new Field("text", 
						new InputStreamReader(new FileInputStream(file),"GBK")));// 对文件内容索引
				doc.add(new Field("filename", 
						file.getCanonicalPath(),
						Field.Store.YES, Field.Index.ANALYZED));// 对文件名建立索引
				writer.addDocument(doc);// 调用addDocument()方法,Lucene会建立doc的索引
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (CorruptIndexException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		indexer lucene = new indexer();
		lucene.createIndex();
	}
}
分享到:
评论

相关推荐

    lucene增删改查+IKAnalyzer

    总结,Lucene和IKAnalyzer的组合为我们提供了构建中文全文搜索引擎的强大工具。通过理解它们的工作原理和核心组件,我们可以灵活地应用于各种项目中,提升数据检索的效率和用户体验。在实际开发中,还需要考虑性能...

    Lucene的IK Analyzer 3.0 中文分词器 全解

    - 使用IK Analyzer 需要导入Analyzer类,并实例化IKAnalyzer对象。然后在创建索引和执行查询时使用这个Analyzer,这样可以确保中文文本被正确地分词处理。 总之,IK Analyzer 3.0 是一个强大而灵活的中文分词工具...

    Lucene4.7+IK Analyzer中文分词入门教程

    在Lucene中,你可以通过创建`Analyzer`实例,然后使用`Document`对象来添加字段,如药品名称和功能主治,这些字段会被分词器处理。 在索引建立完成后,可以使用Lucene提供的搜索API来进行查询。这通常涉及到创建`...

    lucene第一步---5.中文分词IKAnalyzer和高亮highlighter的使用

    中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是Apache软件基金会的一个开放源...

    中文分词库 IKAnalyzer For Lucene 5.2.1(适用Lucene 5.2.1)

    Lucene 5.2.1是Apache Lucene的一个版本,它提供了高性能、可扩展的全文检索和分析功能,而IKAnalyzer则为这个版本提供了定制化的中文处理能力。 **IKAnalyzer的特点与优势** 1. **灵活的分词策略**:IKAnalyzer...

    IKAnalyzer-5.0

    IKAnalyzer是一款广泛应用于Java环境中的开源中文分词器,尤其在全文检索和自然语言处理领域有着重要的作用。这款工具主要用于解决中文文本的切分问题,为搜索引擎、信息检索系统等提供支持。IKAnalyzer 5.0是其针对...

    IKAnalyzer.rar

    在Lucene这样的全文检索框架中,IKAnalyzer扮演着至关重要的角色,因为它能帮助系统准确地理解并索引中文词汇,从而提高搜索的精度和效率。 Lucene是一个强大的全文检索库,由Apache软件基金会开发,广泛用于构建高...

    使用lucene4.10,IKAnalyzer5.0提取敏感词

    在IT领域,文本处理是至关重要的,特别是在搜索引擎和数据分析中。...同时,`Lucene`和`IKAnalyzer`的这种组合也为我们提供了强大的文本处理能力,可以在大量文本数据中快速、准确地定位和管理信息。

    LuceneJar5.3.1+IKAnalyzer2012_u6

    通过这样的整合,我们可以利用Lucene的强大搜索功能和IKAnalyzer的优秀中文处理能力,构建出一个高效的中文搜索引擎。这种一站式解决方案不仅节省了开发者寻找和整合组件的时间,还确保了系统的稳定性和兼容性,对于...

    IKAnalyzer.zip

    IKAnalyzer是一款广泛应用于Java语言的信息检索和自然语言处理领域的开源分词工具,主要设计目标是为中文搜索引擎提供高效、灵活的分词支持。这个压缩包"IKAnalyzer.zip"包含了IKAnalyzer 2012_u6版本,它是针对...

    IKAnalyzer分词工具

    在IKAnalyzer的场景中,NLP主要用于处理输入的中文文本,将连续的汉字序列分解为有意义的词语,这一过程就是分词。分词是NLP的基础任务,对于后续的文本分析、情感分析、问答系统等应用至关重要。 在实际应用中,IK...

    IKAnalyzer修复源码,Lucene3.6 Jar及使用示例

    IKAnalyzer是一款广受欢迎的开源中文分词器,主要用于提高中文信息检索、文本分析等领域...通过学习和使用这些资料,不仅可以了解IKAnalyzer和Lucene的基础知识,还能掌握如何处理中文文本信息,以及如何优化搜索性能。

    IKAnalyzer.rar中文分析器

    IKAnalyzer是一款专为中文分词设计的开源分析器,它在Java环境下运行,广泛应用于搜索引擎、信息检索系统、文本挖掘等领域。这个压缩包文件“IKAnalyzer.rar”包含了IKAnalyzer的相关资源和配置,使得用户能够方便地...

    IKAnalyzer中文分词器V3.2使用

    在Lucene索引构建过程中,你可以将IKAnalyzer作为Analyzer,这样分词器会自动处理文本的分词工作,提升搜索精度。 总之,IKAnalyzer中文分词器以其高效、易用和可扩展性在Java领域的中文处理中占有一席之地。通过...

    IKAnalyzer

    这对于后续的文本分析和处理至关重要,比如情感分析、关键词提取、搜索引擎索引等。 **IKAnalyzer的介绍** IKAnalyzer,全称为“Intelligent Chinese Analyzer”,是由刘海洋发起的开源项目,最初设计目标是为了...

    IKAnalyzer3.2(稳定版)分词

    IKAnalyzer3.2是中文分词工具的一个稳定版本,它主要设计用于提高中文文本处理的效率和准确性。分词在信息检索、自然语言处理、文本挖掘等领域扮演着至关重要的角色,因为它是理解中文文本基础的第一步。IKAnalyzer...

    IKAnalyzer2012.jar.zip

    IKAnalyzer是一款开源的、基于Java实现的中文分词器,主要应用于搜索引擎和其他需要对中文文本进行处理的系统中。这个“IKAnalyzer2012.jar.zip”压缩包包含了IKAnalyzer的两个不同版本的jar包,分别是IKAnalyzer...

    solr+IK Analyzer

    1. **索引和查询优化**:Solr 4.10.3在处理大规模数据时表现出了优秀的性能,通过优化索引结构和查询算法,提高了搜索速度和响应时间。 2. **多核心支持**:允许多个独立的搜索应用在同一Solr实例上运行,便于管理和...

    IKAnalyzer中文分词器

    ### IKAnalyzer中文分词器V3.1.6:深入解析与使用...IKAnalyzer作为一个成熟的中文分词解决方案,不仅适用于Lucene,也广泛应用于Solr等搜索引擎中,通过其强大的分词能力和灵活的配置选项,为开发者提供了有力的支持。

    IKAnalyzer中文分词器 jar包 + 使用文档 + 配置文件 + doc

    IKAnalyzer是一款针对中文处理的开源分词工具,广泛应用于搜索引擎、信息检索系统、文本挖掘等领域。它是基于Java语言开发的,能够很好地与Lucene、Solr等全文检索框架集成,提供高效的中文分词能力。 首先,我们要...

Global site tag (gtag.js) - Google Analytics