`
q_wong
  • 浏览: 108480 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Lucene Paoding Demo

阅读更多

/**
 * 
 * @author Q.Wong [2010-12-17]
 * 
 */
public class IndexManager {

	private static Logger logger = LogManager.getLogger(IndexManager.class);

	/**
	 * return an IndexWriter with FSDirectory
	 * 
	 * @param indexDir
	 * @param analyzer
	 * @return
	 * @throws CorruptIndexException
	 * @throws LockObtainFailedException
	 * @throws IOException
	 */
	public static IndexWriter getFSDirectoryIndexWriter(String indexDir,
			Analyzer analyzer) throws CorruptIndexException,
			LockObtainFailedException, IOException {
		return new IndexWriter(FSDirectory.open(new File(indexDir)), analyzer,
				true, MaxFieldLength.LIMITED);
	}

	/**
	 * return an IndexWriter with RamDir
	 * 
	 * @param ramDir
	 * @param analyzer
	 * @return
	 * @throws CorruptIndexException
	 * @throws LockObtainFailedException
	 * @throws IOException
	 */
	public static IndexWriter getRamDirIndexWriter(Directory ramDir,
			Analyzer analyzer) throws CorruptIndexException,
			LockObtainFailedException, IOException {
		return new IndexWriter(ramDir, analyzer, MaxFieldLength.UNLIMITED);
	}

	/**
	 * return an IndexReader with FSDirectory
	 * 
	 * @param indexDir
	 * @return
	 * @throws CorruptIndexException
	 * @throws IOException
	 */
	public static IndexReader getFSDirectoryIndexReader(String indexDir)
			throws CorruptIndexException, IOException {
		return IndexReader.open(FSDirectory.open(new File(indexDir)), true);
	}

	/**
	 * return an IndexReader with RamDir
	 * 
	 * @param ramDir
	 * @return
	 * @throws CorruptIndexException
	 * @throws IOException
	 */
	public static IndexReader getRamDirIndexReader(Directory ramDir)
			throws CorruptIndexException, IOException {
		return IndexReader.open(ramDir);
	}

	/**
	 * 创建索引
	 * 
	 * @param f
	 * @param writer
	 * @throws CorruptIndexException
	 * @throws IOException
	 */
	public static void indexDocs(File f, IndexWriter writer,
			Boolean storeContents) throws CorruptIndexException, IOException {
		if (!f.canRead()) {
			return;
		}
		if (f.isDirectory()) {
			String[] files = f.list();
			if (null != files) {
				for (String file : files) {
					indexDocs(new File(f, file), writer, storeContents);
				}
			}
		} else {
			writer.addDocument(Document(f, storeContents));
			logger.info("Indexed: [" + f.getPath() + "]");
		}
	}

	/**
	 * 根据File生成Document对象
	 * 
	 * @param f
	 * @param storeContents
	 * @return
	 * @throws IOException
	 */
	private static Document Document(File f, Boolean storeContents)
			throws IOException {
		Document doc = new Document();
		doc.add(new Field("path", f.getPath(), Field.Store.YES,
				Field.Index.NOT_ANALYZED));

		doc.add(new Field("modified", DateTools.timeToString(f.lastModified(),
				DateTools.Resolution.MINUTE), Field.Store.YES,
				Field.Index.NOT_ANALYZED));

		if (storeContents) {
			doc.add(new Field("contents", readFile(f), Field.Store.YES,
					Field.Index.ANALYZED,
					Field.TermVector.WITH_POSITIONS_OFFSETS));
		} else {
			doc.add(new Field("contents", new FileReader(f)));
		}
		return doc;
	}

	/**
	 * 读取文件内容
	 * 
	 * @param file
	 * @return
	 * @throws IOException
	 */
	public static String readFile(File file) throws IOException {
		Reader re = new FileReader(file);
		char[] chs = new char[1024];
		int count;
		String content = "";
		while ((count = re.read(chs)) != -1) {
			content = content + new String(chs, 0, count);
		}
		return content;
	}

}
 
分享到:
评论

相关推荐

    lucene Demo(paoding)

    【Lucene Demo (Paoding)】是一个展示如何在Java环境中使用Apache Lucene库进行全文搜索引擎构建的示例项目。Lucene是开源的全文检索引擎库,它提供了强大的文本搜索功能,而Paoding则是针对中文处理的插件,优化了...

    paoding_analysis.rar_PaodingAnalysis_lucene paoding_paodi

    文件名中的"lucene paoding paodi"标签,暗示了这是关于Lucene使用Paoding分词器进行中文索引的示例或者库文件。开发者可以解压这个文件,参考其中的代码示例,学习如何在自己的项目中集成并使用PaodingAnalysis。 ...

    Lucene-Demo.rar Lucene分词的demo

    这个名为"Lucene-Demo.rar"的压缩包提供了一个基于Lucene的分词演示项目,可以帮助开发者快速理解和应用Lucene的分词功能。在这个压缩包中,有两个主要的文件:`lucene`目录和`Lucene-Demo`文件。 `lucene`目录很...

    lucene_demo例子

    在"lucene_demo"这个压缩包中,很可能包含了一些示例代码或者项目,用于演示如何使用Lucene进行实际的文本搜索开发。这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,...

    Lucene简单Demo(附带Jar)

    "luceneDemo1"和"lucene"可能是两个不同的文件或文件夹,它们可能包含了运行Lucene的示例代码或者已经构建好的索引。"luceneDemo1"可能是一个包含Lucene应用示例的Java项目,包含了必要的类和方法,展示了如何使用...

    中文搜索分词lucene包+paoding包

    Lucene和Paoding是两个广泛使用的开源工具,它们专门用于实现高效、准确的中文分词。 Lucene是一个强大的全文检索库,由Apache软件基金会开发。它提供了索引和搜索文本的能力,使得开发者能够快速构建自己的搜索...

    简单的lucene demo

    **标题:“简单的lucene demo”** Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发并维护,它在Java编程语言中实现,广泛应用于各种搜索应用的构建。这个“简单的lucene demo”旨在向我们展示如何利用...

    luceneDemo(完整代码)

    《LuceneDemo(完整代码):入门到精通的探索》 Lucene,作为Apache软件基金会的一个开源项目,是Java环境中最流行的全文检索库。它提供了一个高性能、可扩展的信息检索服务,广泛应用于搜索引擎开发和大数据分析中...

    Lucene初探,一个初级的LuceneDemo

    **Lucene初探:一个初级的LuceneDemo** 在IT领域,搜索引擎技术是不可或缺的一部分,尤其是在大数据时代,高效的信息检索显得尤为重要。Apache Lucene就是这样一款强大的开源全文搜索引擎库,它为开发者提供了构建...

    lucene-demo-6.6.0.jar

    lucene-demo-6.6.0.jar

    lucene简单demo

    在"LuceneDemo"这个项目中,你可以期待看到一个简单的Java程序,它将演示上述过程,可能包括创建一个或多个包含文本数据的Document,使用默认的StandardAnalyzer建立索引,然后执行一个基本的文本查询,展示搜索结果...

    Lucene3.3.0学习Demo

    **Lucene 3.3.0 学习Demo** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。在3.3.0版本中,Lucene提供了强大的文本搜索功能,包括分词、索引创建、查询解析和结果排序等。这个"Lucene3.3.0学习Demo...

    ssh集成Lucene4.7demo

    在这个“ssh集成Lucene4.7demo”项目中,开发者将SSH框架与Lucene 4.7版本的全文搜索引擎进行了整合,同时还引入了IKAnalyzer作为中文分词器,以支持对中文文本的处理。这个示例项目不仅包含了基本的整合工作,还...

    Lucene入门demo

    这个“Lucene入门demo”将帮助我们理解如何使用 Lucene 进行基本的索引和搜索操作。 **一、Lucene 的核心概念** 1. **索引(Indexing)**: 在 Lucene 中,索引是文档内容的预处理结果,类似于数据库中的索引。通过...

    lucene3.5全文检索案例lucene+demo

    本篇文章将围绕“lucene3.5全文检索案例lucene+demo”,详细讲解Lucene 3.5的核心概念、关键功能以及如何通过实例进行操作。 一、Lucene 3.5核心概念 1. 文档(Document):Lucene中的最小处理单元,相当于数据库...

    Lucene常用的Demo

    本篇文章将深入探讨Lucene的几个常见示例,包括`LuceneDemo`、`LuceneZJ`、`Lucene_HelloWorld`,帮助初学者快速理解Lucene的基本操作。 1. **Lucene_HelloWorld** 这个示例是入门Lucene的首选,它展示了如何创建...

    lucene示例 demo+jar包

    "lucene示例 demo+jar包"中提到的 jar 包是 Lucene 库的运行时依赖,它们包含了 Lucene 的所有类和方法。开发人员需要这些 jar 包来编译和运行使用 Lucene 的程序。通常,开发者会将这些 jar 文件添加到项目的类路径...

    lucene.net demo

    **Lucene.Net 搜索Demo详解** Lucene.Net是一款开源全文搜索引擎库,它是Apache Lucene项目在.NET Framework上的实现。这个“lucene.net demo”旨在帮助开发者了解如何利用Lucene.Net来构建桌面搜索功能,让我们...

    lucene3.0学习笔记(三)与paoding整合

    《Lucene 3.0 学习笔记(三)与Paoding整合》 在深入了解Lucene 3.0的过程中,我们经常会遇到如何将其与第三方工具进行整合的问题,以提升搜索性能和用户体验。这篇学习笔记主要关注的是将Lucene 3.0与Paoding搜索...

    paoding+lucene实现全文检索功能简单实例

    本实例将介绍如何结合Paoding和Lucene来实现一个简单的全文检索系统,这在处理中文数据时尤其有效。 首先,让我们了解一下Paoding。Paoding是一款优秀的中文分词库,它针对中文的特点进行了优化,能有效地进行词语...

Global site tag (gtag.js) - Google Analytics