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

Lucene Paoding Demo

阅读更多

 

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

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

	/**
	 * 执行查询
	 * 
	 * @param analyzer
	 * @param searcher
	 * @param field
	 * @param keyWord
	 * @param n
	 * @return
	 * @throws ParseException
	 * @throws IOException
	 */
	public static TopDocs doQuery(Analyzer analyzer, Searcher searcher,
			String field, String keyWord, int n) throws ParseException,
			IOException {
		QueryParser parser = new QueryParser(Version.LUCENE_30, field, analyzer);
		Query query = parser.parse(keyWord);

		TopDocs hits = searcher.search(query, n);
		return hits;
	}

	/**
	 * 处理查询返回的结果
	 * 
	 * @param hits
	 * @param searcher
	 * @throws CorruptIndexException
	 * @throws IOException
	 */
	public static void resolvedResults(TopDocs hits, Searcher searcher)
			throws CorruptIndexException, IOException {

		ScoreDoc[] scoreDocs = hits.scoreDocs;
		for (ScoreDoc scoreDoc : scoreDocs) {
			Document doc = searcher.doc(scoreDoc.doc);
			logger.info(doc.getField("path") + "   " + scoreDoc.toString()
					+ "  ");
		}

	}

	/**
	 * 执行查询并处理查询结果
	 * 高亮关键字
	 * 
	 * @param analyzer
	 * @param reader
	 * @param fieldName
	 * @param keyWord
	 * @param n
	 * @throws ParseException
	 * @throws IOException
	 * @throws InvalidTokenOffsetsException
	 */
	public static void doQuery(Analyzer analyzer, IndexReader reader,
			String fieldName, String keyWord, int n) throws ParseException,
			IOException, InvalidTokenOffsetsException {
		QueryParser parser = new QueryParser(Version.LUCENE_30, fieldName,
				analyzer);
		Query query = parser.parse(keyWord);

		Searcher searcher = new IndexSearcher(reader);
		TopDocs hits = searcher.search(query, n);

		Highlighter highlighter = new Highlighter(new Formatter() {

			@Override
			public String highlightTerm(String originalText, TokenGroup group) {
				if (group.getTotalScore() <= 0) {
					return originalText;
				}
				return "【" + originalText + "】";
			}
		}, new QueryScorer(query));

		int maxNumFragmentsRequired = 5;
		String fragmentSeparator = "...";

		ScoreDoc[] scoreDocs = hits.scoreDocs;
		for (ScoreDoc scoreDoc : scoreDocs) {
			int docId = scoreDoc.doc;
			Document doc = searcher.doc(docId);
			String text = doc.get(fieldName);
			TermPositionVector tpv = (TermPositionVector) reader
					.getTermFreqVector(docId, fieldName);
			System.out.println(tpv.size());
			TokenStream tokenStream = TokenSources.getTokenStream(tpv);
			String result = highlighter.getBestFragments(tokenStream, text,
					maxNumFragmentsRequired, fragmentSeparator);
			System.out.println(result);
		}
	}

}
分享到:
评论

相关推荐

    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