`
RobustTm
  • 浏览: 23935 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Lucene 高亮显示

阅读更多

Lucene高亮显示
public static List search(String[] fields, String keyword)
throws IOException, InvalidTokenOffsetsException {

ArrayList list = new ArrayList();
IndexSearcher isearcher = null;

IKSimilarity iKSimilarity = new IKSimilarity();

Directory dir = new SimpleFSDirectory(new File(indexDir));

IndexReader indexReader = IndexReader.open(dir, true);

isearcher = new IndexSearcher(indexReader);

Analyzer analyzer = new IKAnalyzer();

isearcher.setSimilarity(iKSimilarity);

// QueryParser parser = new
// QueryParser(Version.LUCENE_30,field,analyzer);

Query query = IKQueryParser.parseMultiField(fields, keyword);

TopScoreDocCollector collector = TopScoreDocCollector.create(100, false);

isearcher.search(query, collector);

// TopDocs topDocs = isearcher.search(query , 5);

TopDocs topDocs = collector.topDocs();

ScoreDoc[] scoreDocs = topDocs.scoreDocs;

for (int i = 0; i < scoreDocs.length; i++) {
Document doc = isearcher.doc(scoreDocs[i].doc);

/** 高亮显示的关键步骤 **/
SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Highlighter highlighter = new Highlighter(simpleHtmlFormatter,new QueryScorer(query));
highlighter.setTextFragmenter(new SimpleFragmenter(50));
String goal= doc.get("goal");
String highlightGoal = "";
if(!goal.equals("")){
    TokenStream tokenStream = analyzer.tokenStream("goal",new StringReader(goal));
    highlightGoal = highlighter.getBestFragment(tokenStream, goal); 
   /** 注意 ***/

    if(highlightGoal==null){
        highlightGoal = goal;
   }
}

/** 封装高亮信息 **/
Info info = new Info();
info.setNo(doc.getField("no").stringValue());
info.setWeight(isearcher.explain(query, scoreDocs[i].doc).getValue());
info.setGoal(highlightGoal);
list.add(info);
}
return list;
}

 

在做这个例子的过程中遇到了一个问题,出现在

if(highlightGoal==null){
        highlightGoal = goal;
   }
如果goal中没有关键词 词元,highlightGoal就会为null

分享到:
评论

相关推荐

    lucene 高亮显示. java

    通过上述方法,不仅能够保持Lucene高亮显示功能的准确性,还能在处理中文分词时显著提升系统性能,特别是对于大数据量和高并发场景下的应用,这种优化显得尤为重要。Lucene的TermVector特性,配合合理的代码实现,为...

    lucene高亮显示

    ### Lucene高亮显示详解 在全文搜索领域,Apache Lucene是业界标准的搜索引擎库,提供了强大的文本搜索功能。而在搜索结果中实现关键词高亮显示,可以极大地提升用户体验,让用户快速定位到搜索词所在的位置。本文...

    SpringBoot+Lucene搜索结果高亮显示Demo

    **SpringBoot+Lucene搜索结果高亮显示** 在现代Web应用程序中,强大的全文搜索引擎功能是不可或缺的,而Apache Lucene正是这样一个高效的、可扩展的开源全文检索库。在这个SpringBoot+Lucene的Demo中,我们将深入...

    java实现lucene高亮显示Html,直接测试就可以用

    本文将详细介绍如何使用Java和Lucene来实现HTML文本的高亮显示,以便用户在搜索结果中能快速识别关键词。提供的`HighLighterUtils.java`文件应该包含了实现这一功能的核心代码。 首先,我们需要理解高亮显示的基本...

    lucene 多字段查询+文字高亮显示

    本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene多字段查询”。在信息检索系统中,用户可能希望根据多个字段来过滤和排序结果...

    Lucene+HighLighter高亮显示实例

    《Lucene+HighLighter高亮显示实例解析》 在信息技术领域,搜索引擎的构建与优化是至关重要的一环,其中,如何有效地对搜索结果进行高亮显示,以突出关键信息,是提升用户体验的关键因素之一。本篇文章将深入探讨...

    lucence高亮显示

    **Lucene高亮显示** 在信息检索领域,用户通常希望在搜索结果中快速找到与查询相关的关键词,这就是所谓的“高亮显示”。Apache Lucene是一个强大的全文搜索引擎库,它提供了多种功能,包括高亮显示搜索结果。高亮...

    Lucence高亮显示的实现

    ### Lucene高亮显示实现详解 #### 一、引言 在搜索引擎开发中,为了提升用户体验,往往需要对搜索结果中的关键词进行高亮处理。这样不仅可以让用户一眼就能看到搜索结果与他们输入的关键词之间的关联性,同时也有...

    lucene-highlighter-2.2.0-src.zip

    《深入解析Lucene高亮显示源码:剖析`lucene-highlighter-2.2.0-src.zip`》 Lucene,作为一个开源全文检索库,以其高效、灵活的特点在信息检索领域广泛应用。在处理搜索结果时,为了提升用户体验,通常会采用高亮...

    自己写的lucene分页高亮显示代码

    本压缩包中的代码着重展示了如何使用 Lucene 进行分页搜索和结果高亮显示。下面将详细解释这两个关键知识点。 **一、Lucene 分页搜索** 在大型数据集上进行搜索时,一次性返回所有结果并不实际,因此分页搜索显得...

    lucene.net以及高亮的DLL文件

    标题中的“lucene.net以及高亮的DLL文件”指的是在.NET环境中使用Lucene搜索引擎库时,涉及到了文本高亮显示的DLL组件。Lucene.Net是一个开源的全文检索库,它是Apache Lucene项目针对.NET Framework的移植版本,为...

    java实现高亮显示的jar包,lucene用的jar包

    这个标题提到的"java实现高亮显示的jar包,lucene用的jar包"是指利用Lucene库进行文本搜索时,对搜索结果进行高亮显示的相关功能。下面我们将深入探讨Lucene的核心组件、高亮显示的实现原理以及相关jar包的作用。 ...

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

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

    lucene.NET 中文分词

    本文将深入探讨Lucene.NET如何进行中文分词以及高亮显示的实现。 ### 1. 中文分词 中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词...

    lucene-memory-3.0.2.jar

    lucene-memory-3.0.2.jar,lucene高亮显示中不可少的jar包lucene-memory-*.jar

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

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

    IKAnalyzer LUCENE.4.9 中文分词的高亮显示

    标题"IKAnalyzer LUCENE.4.9 中文分词的高亮显示"表明我们将探讨如何使用IKAnalyzer与Lucene 4.9版本相结合,实现搜索结果的关键词高亮功能。高亮显示有助于用户快速识别和理解搜索结果中的重要信息。 IKAnalyzer的...

    lucene事例(包含基本增删改查、中文词分器、高亮显示等)

    在本示例中,我们将探讨如何使用Lucene进行基本的增删改查操作,并且了解如何处理中文文档以及利用Luke工具进行索引分析,以及实现搜索结果的高亮显示。 首先,让我们深入理解Lucene的基础概念。Lucene的核心是建立...

    个人搜索引擎开发的三种高亮显示的方法小结

    本文将详细介绍三种常用的高亮显示方法,这些方法基于Lucene框架,适用于不同的场景和需求。 ### 1. 基于字符串替换的高亮显示 这是最基础也是最简单的高亮显示实现方式。其核心思想是通过字符串匹配,找到搜索词...

    Lucene 3.0.1 全文检索引擎的架构 对文件,数据库建索引,及查询(高亮显示)

    - 高亮显示是将查询中的匹配术语在搜索结果中突出显示的一种技术,方便用户快速理解匹配内容。 5. **标签中的"源码"和"工具"**: - "源码"意味着Lucene是开源的,允许开发者深入研究其内部工作原理,并根据需求...

Global site tag (gtag.js) - Google Analytics