`
hdxiong
  • 浏览: 376479 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lucene 2.4 + Highlighter 2.4 的分页+高亮显示代码例子

阅读更多
Lucene 2.4 + Highlighter 2.4 的分页+高亮显示

import net.paoding.analysis.analyzer.PaodingAnalyzer;  
import org.apache.lucene.analysis.Analyzer;  
import org.apache.lucene.document.Document;  
import org.apache.lucene.queryParser.MultiFieldQueryParser;  
import org.apache.lucene.search.BooleanClause;  
import org.apache.lucene.search.IndexSearcher;  
import org.apache.lucene.search.Query;  
import org.apache.lucene.search.ScoreDoc;  
import org.apache.lucene.search.TopDocCollector;  
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;  
/** 
* Lucene 2.4 + Highlighter 2.4 的分页+高亮显示代码例子.<br> 
* 高亮的css自己写吧。 
*  
* @author 老紫竹研究室(laozizhu.com) 
*/ 
public class TestLuceneHighlighter {  
  private static final String FIELD_TITLE = "title";  
  private static final String FIELD_BODY = "body";  
  public synchronized Analyzer getAnalyzer() {  
    return new PaodingAnalyzer();  
  }  
  public void test(String queryString, int begin, int number) {  
    IndexSearcher isearcher = null;  
    try {  
      isearcher = new IndexSearcher("d:/index");  
      /* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */ 
      BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD };  
      TopDocCollector collector = new TopDocCollector(10);  
      Query query = MultiFieldQueryParser.parse(queryString, new String[] { FIELD_TITLE, FIELD_BODY }, clauses, getAnalyzer());  
      isearcher.search(query, collector);  
      ScoreDoc[] hits = collector.topDocs().scoreDocs;  
      // 用这个进行高亮显示,默认是<b>..</b>  
      // 用这个指定<read>..</read>  
      SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<read>", "</read>");  
      // 构造高亮  
      // 指定高亮的格式  
      // 指定查询评分  
      Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));  
      // 这个一般等于你要返回的,高亮的数据长度  
      // 如果太小,则只有数据的开始部分被解析并高亮,且返回的数据也少  
      // 太大,有时太浪费了。  
      highlighter.setTextFragmenter(new SimpleFragmenter(Integer.MAX_VALUE));  
      for (int i = begin; i < hits.length && i < begin + number; i++) {  
        Document doc = isearcher.doc(hits[i].doc);  
        // 有三个参数  
        // 分析器  
        // 要解析的字段名  
        // 要解析的数据  
        System.out.println(highlighter.getBestFragment(getAnalyzer(), FIELD_TITLE, doc.get(FIELD_TITLE)));  
      }  
    } catch (Exception e) {  
      e.printStackTrace();  
    } finally {  
      if (isearcher != null) {  
        try {  
          isearcher.close();  
        } catch (Exception e) {  
          e.printStackTrace();  
        }  
      }  
    }  
  } 
分享到:
评论

相关推荐

    SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--data

    本项目结合了这些技术,实现了分页、排序和高亮显示等功能,旨在为用户提供更高效、友好的搜索体验。下面将详细介绍这些知识点: 1. SSH框架: - **Spring**:Spring作为核心容器,管理着应用的Bean,提供了依赖...

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

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

    使用Lucene4.7实现搜索功能,分页+高亮

    标题中的“使用Lucene4.7实现搜索功能,分页+高亮”表明我们要讨论的是如何利用Apache Lucene 4.7版本来构建一个具备搜索、分页和高亮显示功能的系统。Lucene是一个高性能、全文本搜索引擎库,它提供了强大的文本...

    lucene 学习实战系列(高亮+分页)

    本文将深入探讨如何在Lucene中实现高亮显示搜索结果和高效的分页功能,帮助开发者更好地理解和运用这个强大的工具。 一、Lucene简介 Lucene的核心功能是提供文本的索引和搜索,其内部实现了高效的倒排索引结构,...

    传播智课Lucene+代码

    6. **高亮显示**:掌握如何使用Highlighter类来突出显示搜索结果中的匹配部分。 7. **更新和删除索引**:了解如何添加、更新和删除索引中的文档,以及提交更改的操作。 8. **性能优化**:探讨如何通过调整参数、使用...

    lucene检索小例子

    同时,为了提高用户体验,搜索结果中的关键词通常会被高亮显示,Lucene的Highlighter类能帮助我们完成这个任务。 **8. 实例代码分析** 在"ch2"这个子目录中,可能包含了示例代码的第二章节,详细展示了如何使用...

    lucene 站内搜索示例

    - 分页和高亮显示:限制每次返回的结果数量,使用 `Highlighter` 高亮匹配的关键词。 综上所述,Lucene 示例项目提供了完整的站内搜索解决方案,涉及数据预处理、索引构建、查询执行、结果处理等多个环节。通过学习...

    Lucene5.3.1相关jar包

    结果高亮是Lucene提供的一项功能,用于在搜索结果中突出显示与查询关键词匹配的部分。这提高了用户体验,让用户快速识别出搜索关键词在文档中的位置。在Lucene中,可以通过Highlighter类实现这一功能,它可以根据...

    lucene4.7 开发简单实例

    在本实例中,我们将深入探讨Lucene 4.7版本,涵盖索引的创建、修改、删除,以及查询时的排序、分页、优化和高亮显示等功能。此外,我们还将了解如何使用不同的分词器,以适应不同场景的需求。 首先,让我们从基础...

    Lucene实现全文检索

    4. **高亮显示(Highlighting)**:为了提高用户体验,可以使用Highlighter组件高亮显示查询词在搜索结果中的位置。 **三、Lucene的高级特性** 1. **多字段搜索**:Lucene支持对多个字段进行同时搜索,通过...

    官方最新完整版lucene-6.6.0.zip

    5. **高亮显示**:`Highlighter`类实现搜索结果的关键词高亮。 四、实战应用 在实际项目中,开发者通常会结合Lucene与其他框架,如Spring、Solr或Elasticsearch,来构建更复杂的搜索引擎。例如,通过Spring集成...

    在搜索引擎开发过程中的问题解决(关于高亮和结果集)

    - 需要注意的是,高亮显示的实现通常依赖于具体的搜索引擎框架或库,如Lucene、Solr等,因此具体实现细节可能会有所不同。 通过以上分析和解决方案,我们可以有效地解决在搜索引擎开发过程中遇到的关于结果集管理...

    lucene搜索引擎培训资料

    5. **高亮显示**: 使用`Highlighter`将搜索关键词在文档中高亮显示。 6. **分页与搜索性能优化**: `ScoreDoc`和`Sort`用于控制搜索结果的分页,通过缓存和位图索引提升搜索性能。 **五、尚学堂全文检索系统...

    基于Lucene的搜索系统-客户端调用

    此外,还可以利用倒排索引的特性进行相关性排名,以及使用`Highlighter`进行查询结果的高亮显示。 综上所述,基于Lucene的搜索系统结合Paoding中文分词,实现了高效、准确的中文全文搜索功能。客户端调用涉及了查询...

    lucene学习03

    8. **分页与高亮**:Lucene提供ScoreDoc和HitQueue等工具进行结果分页,使用Highlighter类可以对搜索结果中的匹配片段进行高亮显示。 9. **分布式搜索**:随着数据量的增大,单机Lucene可能无法满足需求。Solr和...

    Lucene.Net.DemoLib.dll

    4. **高亮显示**:示例库还涵盖了如何使用高亮器(Highlighter)突出显示查询匹配的部分,提升用户体验。 5. **性能优化**:通过示例代码,开发者可以学习如何优化索引和搜索性能,如使用倒排索引、位集合(BitSet...

    lucene-api.rar_lucene

    5. **分页与高亮**:可以设置搜索结果的显示数量,并使用Highlighter对匹配的查询词进行高亮。 ### 4. Lucene中文处理 在处理中文时,我们通常使用ChineseAnalyzer。它内置了分词器,如SmartChineseAnalyzer,能较...

    lucene3.6入门实例教程

    6. **高级特性**:可能涉及更复杂的搜索技术,如布尔查询、短语查询、模糊查询、范围查询,以及如何使用Filter和Highlighter进行结果过滤和高亮显示。 7. **优化与性能**:讨论如何通过调整参数、使用复合索引、...

    Lucene 搜索引擎框架 基础实践

    4. **高亮显示**:使用 `Highlighter` 类可以突出显示查询词在搜索结果中的出现位置。 5. **分页和分块检索**:对于大量结果,可以使用 `TopScoreDocCollector` 或 `TopDocsCollector` 实现分页。 6. **分布式搜索...

Global site tag (gtag.js) - Google Analytics