先创建索引,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")); //如果不高亮显示则不判断
}
所需的包
分享到:
相关推荐
《Lucene+HighLighter高亮显示实例解析》 在信息技术领域,搜索引擎的构建与优化是至关重要的一环,其中,如何有效地对搜索结果进行高亮显示,以突出关键信息,是提升用户体验的关键因素之一。本篇文章将深入探讨...
这个SpringBoot+Lucene的Demo为开发者提供了一个起点,可以在此基础上进一步扩展,比如增加对多字段的索引和搜索、支持多种类型的文档、优化查询性能等。通过熟练掌握这些知识,你可以构建出更加强大的全文搜索引擎...
- **高亮显示**:Lucene支持高亮搜索关键词,将匹配的关键词在搜索结果中突出显示,使用户更容易找到相关信息。 3. 分页: - 分页通常通过设置页码和每页记录数来实现。在查询时,通过偏移量(offset)和记录数...
Lucene的高亮显示是指在搜索结果中,对匹配查询关键词的部分进行突出显示,通常用不同颜色或者加粗等方式实现。这不仅能够帮助用户迅速识别搜索结果的相关性,还能提高搜索结果的可读性和吸引力。 #### 二、高亮...
高亮显示是搜索结果中的一种常见处理方式,它通过使用特定的样式(如背景色或粗体)来突出显示与搜索查询匹配的关键词,使用户能够一眼看出哪些部分与他们的搜索请求相关。 在Java和Lucene中,实现这个功能通常涉及...
- 可能没有处理多字段高亮,只对单个字段进行了高亮。 - 高亮样式可能过于简单,无法自定义复杂的格式。 这个代码虽然有一些局限性,但对于初学者来说,它是了解 Lucene 分页和高亮基础的一个良好起点。通过深入...
本文将深入探讨Lucene.NET如何进行中文分词以及高亮显示的实现。 ### 1. 中文分词 中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词...
1. **FieldQuery**: FieldQuery类用于创建一个表示查询的实例,它将查询字符串解析成一个字段查询对象,这是高亮的基础。 2. **SimpleFragmenter**: SimpleFragmenter是默认的分片器,根据设定的最大片段长度将文本...
标题中的“使用Lucene4.7实现搜索功能,分页+高亮”表明我们要讨论的是如何利用Apache Lucene 4.7版本来构建一个具备搜索、分页和高亮显示功能的系统。Lucene是一个高性能、全文本搜索引擎库,它提供了强大的文本...
使用visual studio 开发的lucene.net和盘古分词实现全文检索。并按照lucene的得分算法进行多...有点小bug,在这个字段没有关键字的时候可能会不显示数据, 如果要是只看全文检索,可以自己去掉高亮,看一下检索结果。
7. **高亮显示**:Lucene 提供了 Highlighter 组件,用于在搜索结果中突出显示匹配的查询词,提升用户体验。 ### 二、文件和数据库建索引 Lucene 可以对各种来源的数据进行索引,包括文件系统中的文件和数据库中的...
在本教程中,我们将深入探讨Lucene中的高亮显示机制,这是搜索引擎返回结果时非常有用的一项功能,可以突出显示与查询匹配的关键字。在实际应用中,用户通常希望看到搜索词在文档中的确切位置,高亮显示使得这些匹配...
“Lucene与数据库结合示例(加双关键字高亮)”这个标题表明,我们将讨论如何将开源全文搜索引擎Lucene与关系型数据库MySQL整合在一起,并且在搜索结果中实现关键词高亮显示,以提升用户体验。这通常涉及到数据的...
关于高亮显示,当用户输入查询后,Lucene会返回匹配的文档,但为了提高用户体验,通常需要将匹配的关键词在结果中突出显示。Lucene提供Highlighter类来实现这个功能,它可以根据查询匹配的词项对原始文本进行标记,...
- **多字段搜索**:允许用户在多个字段中同时进行搜索,提高查询的灵活性。 在实际应用中,可能还需要考虑如何处理停用词、同义词、词形还原等问题,以提升搜索质量。此外,定期重建索引和优化索引结构也是保持搜索...
Highlighter可以根据查询关键词,找出文档中匹配的部分,并用特殊标记(如高亮颜色)进行突出显示。这样,用户可以一眼看出哪些部分与他们的查询相关。 总结来说,Lucene.NET与盘古分词的结合,使得.NET开发者能够...
- 增强搜索体验:通过短语匹配、近似搜索、高亮显示匹配片段等功能,提升用户体验。 - 索引优化:定期进行合并优化,减少索引碎片,提高检索效率。 - 多线程处理:利用多线程进行索引构建和查询,提高系统性能。 ...
9. **扩展性**: 除了基本功能,Lucene.Net还提供了一些高级特性,如近实时搜索、faceted search(分类搜索)、 SpellChecker(拼写检查)和Highlighter(高亮显示搜索词)等。 10. **应用实例**: Lucene.Net常用于...