`
fffddgx
  • 浏览: 38601 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

lucene关键字高亮显示

阅读更多

关键字高亮显示也就是在页面显示时,事先对要显示的内容处理,抽取出关键字并加亮,这里抽取关键字也是用lucene,lucene自带有heightlight包就可以实现此功能。

Highlighter包括了三个主要部分:段划分器(Fragmenter)、计分器(Scorer)和格式化器(Formatter)。

通常要用到的几个重要类有:

import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;

1)SimpleFragmenter

Highlighter利用Fragmenter将原始文本分割成多个片段。内置的SimpleFragmenter将原始文本分割成相同大小的片段,片段默认的大小为100个字符。这个大小是可控制的。

2)SimpleHTMLFormatter:用来控制你要加亮的关键字的高亮方式

此类有2个构造方法

    1:SimpleHTMLFormatter()默认的构造方法.加亮方式:<B>关键字</B>

    2:SimpleHTMLFormatter(String preTag, String postTag).加亮方式:preTag关键字postTag

3)QueryScorer

QueryScorer 是内置的计分器。计分器的工作首先是将片段排序。QueryScorer使用的项是从用户输入的查询中得到的;它会从原始输入的单词、词组和布尔查询中提取项,并且基于相应的加权因子(boost factor)给它们加权。为了便于QueryScoere使用,还必须对查询的原始形式进行重写。比如,带通配符查询、模糊查询、前缀查询以及范围查询 等,都被重写为BoolenaQuery中所使用的项。在将Query实例传递到QueryScorer之前,可以调用Query.rewrite (IndexReader)方法来重写Query对象

4)Highlighter

api:

Class used to markup highlighted terms found in the best sections of a text, using configurable Fragmenter , Scorer , Formatter , Encoder and tokenizers.

实例代码:

	private String hightlightstr(String str, String infor) {
		String fieldName = "text";
		String text = str;
		Analyzer analyzer = new MMAnalyzer();
		String result = str;

		Directory directory = new RAMDirectory();

		try {
			// 索引
			IndexWriter.MaxFieldLength m = new IndexWriter.MaxFieldLength(1000);
			IndexWriter iwriter = new IndexWriter(directory, analyzer, true, m);
			Document doc = new Document();
			doc.add(new Field(fieldName, text, Field.Store.YES,
					Field.Index.ANALYZED,
					Field.TermVector.WITH_POSITIONS_OFFSETS));
			iwriter.addDocument(doc);
			iwriter.close();

			IndexSearcher isearcher = new IndexSearcher(directory);

			QueryParser queryParse = new QueryParser(fieldName, analyzer);
			Query query = queryParse.parse(infor);
			ScoreDoc[] sd = isearcher.search(query, isearcher.maxDoc()).scoreDocs;
			for (int i = 0; i < sd.length; i++) {
				Document docTemp = isearcher.doc(i);
				String value = docTemp.get(fieldName);
				// 高亮显示格式
				SimpleHTMLFormatter sHtmlF = new SimpleHTMLFormatter(
						"<font color='red'>", "</font>");
				Highlighter highlighter = new Highlighter(sHtmlF,
						new QueryScorer(query));
				highlighter.setTextFragmenter(new SimpleFragmenter(100));

				if (value != null) {
					TokenStream tokenStream = analyzer.tokenStream(fieldName,
							new StringReader(value));
					result = highlighter.getBestFragment(tokenStream, value);

				}
			}

			isearcher.close();
			directory.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

分享到:
评论

相关推荐

    Lunene分页关键字高亮显示

    标题 "Lunene分页关键字高亮显示" 暗示了我们正在讨论一个与搜索引擎或数据检索相关的项目,其中涉及到了Lunene(可能是Lucene的误拼),一种广泛使用的全文搜索引擎库,以及如何在搜索结果中实现分页和关键字高亮。...

    Lucene5学习之Highlighte关键字高亮

    《Lucene5学习之Highlighter关键字高亮》 在信息技术领域,搜索引擎的使用已经变得无处不在,而其中的关键技术之一就是如何有效地突出显示搜索结果中的关键字,这就是我们今天要探讨的主题——Lucene5中的...

    Lucene3.0增删改查和关键字高亮实例

    在这个“Lucene3.0增删改查和关键字高亮实例”项目中,我们将深入理解如何利用Lucene 3.0版本进行索引构建、文档的增删改查操作,并学习关键字高亮显示的实现方法。 首先,我们要了解**创建索引**的基本流程。在...

    Lucene与数据库结合示例(加双关键字高亮)

    “Lucene与数据库结合示例(加双关键字高亮)”这个标题表明,我们将讨论如何将开源全文搜索引擎Lucene与关系型数据库MySQL整合在一起,并且在搜索结果中实现关键词高亮显示,以提升用户体验。这通常涉及到数据的...

    android+lucene实现全文检索并高亮关键字索引库

    下面我们将深入探讨如何在Android环境中利用Lucene来创建一个高效、功能丰富的全文检索系统,并了解如何高亮显示搜索结果中的关键字。 首先,我们要理解全文检索的基本原理。全文检索是指通过建立倒排索引来快速...

    整合Lucene搜索用户新闻项目实例,支持搜索关键词高亮

    本项目实例将详细介绍如何整合Lucene到一个用户新闻系统中,以实现高效的新闻搜索功能,并支持搜索关键词的高亮显示。 首先,我们需要了解Lucene的基本概念。Lucene是一个纯Java库,它提供了索引和搜索文本的工具,...

    android+lucene实现全文检索并高亮关键字

    总之,通过使用Apache Lucene,Android应用可以提供强大的全文检索功能,同时高亮显示关键字,提升用户在查找本地文档时的体验。在实现过程中,需要注意资源管理、性能优化以及错误处理,确保在有限的Android环境中...

    一步一步跟我学习lucene(11)---lucene搜索之高亮显示highlighter

    在本教程中,我们将深入探讨Lucene中的高亮显示机制,这是搜索引擎返回结果时非常有用的一项功能,可以突出显示与查询匹配的关键字。在实际应用中,用户通常希望看到搜索词在文档中的确切位置,高亮显示使得这些匹配...

    利用lucene实现文档关键字检索

    在这个使用案例中,我们将深入探讨如何利用Lucene实现对Word文档中的关键字检索并高亮显示结果。 首先,我们需要理解Lucene的基本工作原理。Lucene通过建立倒排索引(Inverted Index)来加速查询。倒排索引是一种...

    对设置 的关键字的全文检索,并且高亮显示

    在IT行业中,全文检索和高亮显示是两个重要的技术概念,尤其在信息检索、搜索引擎以及数据分析等领域广泛应用。这里我们将深入探讨这两个主题。 首先,我们来理解什么是全文检索。全文检索是一种从文档集合中查找...

    安卓搜索相关相关-androidlucene实现全文检索并高亮关键字.rar

    Lucene支持多种复杂的查询语法,能够处理大量的文本数据,并且具备高亮显示查询结果的能力。 2. **Android与Lucene的结合** 在Android环境中使用Lucene时,需要注意的是,由于Android的内存限制,需要对Lucene的...

    java(结合lucene)版的公交搜索系统

    搜索的时候,不限制站点个数和顺序,支持关键字高亮显示。 管理后台:/admin/adminLogin.jsp username: jobcnn password: 123456 管理用户名和密码的更改在:\WEB-INF\classes\sys_setting.properties 文件里面配置...

    详解SpringBoot+Lucene案例介绍

    * lucene-highlighter:提供了关键字高亮显示的功能,用于高亮显示搜索结果中的关键字。 * lucene-analyzers-smartcn:提供了中文分词器,用于将中文文本拆分为单词。 三、配置初始化 在SpringBoot中,我们需要...

    lucene全文搜索ajax例子

    总的来说,这个例子是一个综合性的Web应用,它展示了如何利用Lucene进行全文搜索,结合Ajax技术实现动态更新的搜索结果展示,同时还包括了高亮显示和多次搜索的功能。这对于学习和理解Lucene在实际应用中的工作原理...

    lucene.net+盘古分词多条件全文检索并匹配度排序

    使用visual studio 开发的lucene.net和盘古分词实现全文检索。并按照lucene的得分算法进行多...有点小bug,在这个字段没有关键字的时候可能会不显示数据, 如果要是只看全文检索,可以自己去掉高亮,看一下检索结果。

    Lucene.Net_2_9_1 含高亮等包完整版

    使用高亮器,我们可以突出显示搜索查询中的关键字,使其在文档内容中更加醒目。通常,这涉及到将原始文本分词,找到匹配的搜索词,然后用特定的格式(如不同的颜色或样式)替换这些关键词。在Lucene.Net 2.9.1中,这...

    Lucene基于java的全文检索案例

    5. **高亮显示(Highlighting)**: Lucene 提供了高亮查询结果的功能,可以在显示搜索结果时突出显示匹配的关键词,提升用户体验。 **实现案例** 在 "luceneDemo" 压缩包中,你可能会找到以下部分示例代码和配置,...

    DotLucene演示源码

    在这个"DotLucene演示源码"中,我们可以深入理解如何在.NET环境中利用Lucene进行全文检索、智能分词和关键字高亮等操作。 首先,让我们来了解一下DotLucene的核心概念和功能。DotLucene提供了一个高效的索引机制,...

    lucene实现全文搜索

    此外,Lucene还支持高亮显示搜索结果中的关键词,使用户更容易识别相关性高的部分。 【总结】 Lucene是一个强大的全文搜索引擎库,它简化了从数据提取、索引创建到查询执行的整个过程。通过理解并熟练运用Document...

    Lucene搜索引擎

    同时,系统会在显示的结果中将搜索的关键字进行高亮,通常是通过添加HTML标签(如`&lt;mark&gt;`)来实现描红效果,使得用户一眼就能看出搜索词在文本中的位置。 6. **Database和03**:这两个文件名可能分别代表了数据库...

Global site tag (gtag.js) - Google Analytics