`

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

阅读更多
先创建索引,lucene3.0

Directory directory = null;
IndexSearcher isearcher = null;

Analyzer analyzer = new IKAnalyzer();

directory = new SimpleFSDirectory(new File("D:\data"));
isearcher = new IndexSearcher(directory);  //创建索引

//在索引器中使用IKSimilarity相似度评估器  分词器
  isearcher.setSimilarity(new IKSimilarity());

BooleanQuery bQuery = new BooleanQuery();  //组合查询

Query keywordQuery=null; 

BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD,BooleanClause.Occur.SHOULD,BooleanClause.Occur.SHOULD};  //OR  或者

keywordQuery = MultiFieldQueryParser.parse(Version.LUCENE_30,word,new String[]{"Title","Descripe","Keywords"},flags,analyzer);  //多字段分词搜索

bQuery.add(keywordQuery, BooleanClause.Occur.MUST);  //AND

if(username=="ddddd"){
Query courseQuery = new QueryParser(Version.LUCENE_30, "CourseName",analyzer).parse(course);
 bQuery.add(courseQuery, BooleanClause.Occur.MUST);
}

//搜索相似度最高的5条记录
TopDocs topDocs = isearcher.search(bQuery , 500000);

//输出结果
  ScoreDoc[] scoreDocs = topDocs.scoreDocs;
//关键字高亮显示
Formatter formatter =  new SimpleHTMLFormatter("<font color=\"red\">", "</font>");   //前缀和后缀
Scorer scorer = new QueryScorer(bQuery);

Highlighter highlighter = new Highlighter(formatter, scorer);

highlighter.setTextFragmenter(new SimpleFragmenter(200)); //字长度
//高亮结束



for(int i=0;i<10;i++){
Document targetDoc = isearcher.doc(scoreDocs[i].doc);
	resourceIndex = new ResourceIndex();//存放的javabean
	String title="";
      title = highlighter.getBestFragment(analyzer, "Title", targetDoc.get("Title"));  //高亮显示标题
	if(title==null){
	 resourceIndex.setTitle(targetDoc.get("Title"));
	} else {
		resourceIndex.setTitle(title);
		}
	String Descripe = highlighter.getBestFragment(analyzer,
						"Descripe", targetDoc.get("Descripe"));
		if (Descripe == null) {
					resourceIndex.setDescripe(targetDoc.get("Descripe"));
				} else {
					resourceIndex.setDescripe(Descripe);
				}
   resourceIndex.setVersion(targetDoc.get("Version")); //如果不高亮显示则不判断

}


所需的包
3
1
分享到:
评论
1 楼 lzzluo 2010-10-27  
学习了,谢谢lz

相关推荐

    Lucene+HighLighter高亮显示实例

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

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

    这个SpringBoot+Lucene的Demo为开发者提供了一个起点,可以在此基础上进一步扩展,比如增加对多字段的索引和搜索、支持多种类型的文档、优化查询性能等。通过熟练掌握这些知识,你可以构建出更加强大的全文搜索引擎...

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

    - **高亮显示**:Lucene支持高亮搜索关键词,将匹配的关键词在搜索结果中突出显示,使用户更容易找到相关信息。 3. 分页: - 分页通常通过设置页码和每页记录数来实现。在查询时,通过偏移量(offset)和记录数...

    lucene高亮显示

    Lucene的高亮显示是指在搜索结果中,对匹配查询关键词的部分进行突出显示,通常用不同颜色或者加粗等方式实现。这不仅能够帮助用户迅速识别搜索结果的相关性,还能提高搜索结果的可读性和吸引力。 #### 二、高亮...

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

    高亮显示是搜索结果中的一种常见处理方式,它通过使用特定的样式(如背景色或粗体)来突出显示与搜索查询匹配的关键词,使用户能够一眼看出哪些部分与他们的搜索请求相关。 在Java和Lucene中,实现这个功能通常涉及...

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

    - 可能没有处理多字段高亮,只对单个字段进行了高亮。 - 高亮样式可能过于简单,无法自定义复杂的格式。 这个代码虽然有一些局限性,但对于初学者来说,它是了解 Lucene 分页和高亮基础的一个良好起点。通过深入...

    lucene.NET 中文分词

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

    Lucene.Net_2_9_1+含高亮等包飘红

    1. **FieldQuery**: FieldQuery类用于创建一个表示查询的实例,它将查询字符串解析成一个字段查询对象,这是高亮的基础。 2. **SimpleFragmenter**: SimpleFragmenter是默认的分片器,根据设定的最大片段长度将文本...

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

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

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

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

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

    7. **高亮显示**:Lucene 提供了 Highlighter 组件,用于在搜索结果中突出显示匹配的查询词,提升用户体验。 ### 二、文件和数据库建索引 Lucene 可以对各种来源的数据进行索引,包括文件系统中的文件和数据库中的...

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

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

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

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

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

    关于高亮显示,当用户输入查询后,Lucene会返回匹配的文档,但为了提高用户体验,通常需要将匹配的关键词在结果中突出显示。Lucene提供Highlighter类来实现这个功能,它可以根据查询匹配的词项对原始文本进行标记,...

    Lucene.Net +盘古分词 搜索引擎

    - **多字段搜索**:允许用户在多个字段中同时进行搜索,提高查询的灵活性。 在实际应用中,可能还需要考虑如何处理停用词、同义词、词形还原等问题,以提升搜索质量。此外,定期重建索引和优化索引结构也是保持搜索...

    lucene.net+盘古分词

    Highlighter可以根据查询关键词,找出文档中匹配的部分,并用特殊标记(如高亮颜色)进行突出显示。这样,用户可以一眼看出哪些部分与他们的查询相关。 总结来说,Lucene.NET与盘古分词的结合,使得.NET开发者能够...

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

    - 增强搜索体验:通过短语匹配、近似搜索、高亮显示匹配片段等功能,提升用户体验。 - 索引优化:定期进行合并优化,减少索引碎片,提高检索效率。 - 多线程处理:利用多线程进行索引构建和查询,提高系统性能。 ...

    lucene.net+完全入门教程

    9. **扩展性**: 除了基本功能,Lucene.Net还提供了一些高级特性,如近实时搜索、faceted search(分类搜索)、 SpellChecker(拼写检查)和Highlighter(高亮显示搜索词)等。 10. **应用实例**: Lucene.Net常用于...

Global site tag (gtag.js) - Google Analytics