1、Highlighte包含三个主要部分:
1)段划分器:Fragmenter
2)计分器:Scorer
3)格式化器:Formatter
2、不仅需要你提供记分器和需要高亮显示的文本,还需要一个TokenStream实例。这个TokenStream实例由分析器生成。我们提供的文本用于生成TokenStream,这个TokenStream被用作高亮显示的原始文本。
3、Highlighter利用Fragmenter将原始文本分割成片段,大小可控制
4、QueryScorer为内置的计分器,基于项的加权因子给片段加权。必须对查询的原始形式进行重写,以便QueryScorer使用,被重写为BooleanQuery中所使用的项。在将Query实例传递到QueryScorer之前,可以调用Query.rewrite(IndexReader)方法来重写Query对象。
5、格式化器用于装饰项文本。不指定格式化器,会默认使用内置的SimpleHTMLFormatter。
6、示例
public static void main(String[] args) throws IOException{
Stringfilename=args[0];
if (filename==null){
System.err.println("USAGE:HighlightIt<filename>");
System.exit(-1);
}
TermQuery query=newTermQuery(new Term("f","ipsum"));
QueryScorer scorer=newQueryScorer(query);
//定义标注高亮文本的标签
SimpleHTMLFormatterformatter=
new SimpleHTMLFormatter("<span Highlighter highlighter=newHighlighter(formatter,scorer);
Fragmenterfragmenter=new SimpleFragmenter(50);//减少片断的默认大小
highlighter.setTextFragmenter(fragmenter);
//原始文本语汇单元化
TokenStream tokenstream=newStandardAnalyzer().tokenStream("f",new StringReader(text));
//高亮显示5个匹配最好的片断
Strinresult=highlighter.getBestFragments(tokenstream,text,5,"...");
FileWriter writer=newFileWriter(filename);
writer.write("<html>");
//写入用于高亮显示的HTML
writer.write("<style>\n"+".highlight{\n"+"backgroud:yellow;\n"+"}\n"+"</style>");
writer.write("<body>");
writer.(result);
writer.write("</body></html>");
writer.close();
}
具体使用说明如下:
1)建立索引时,在文档相关字段记录词条的位置
Field f = new Field(FIELD_NAME, text ,
Field.Store.YES, Field.Index.TOKENIZED,
Field.TermVector.WITH_POSITIONS_OFFSETS);
d.add(f);
2)构造HighLighter对象
Highlighter highlighter =new Highlighter(new QueryScorer(query));
3)设置文本分块
highlighter.setTextFragmenter(new SimpleFragmenter(20));
建立TermPositionVector 对象
TermPositionVector tpv = (TermPositionVector)reader.getTermFreqVector(hits.id(i),FIELD_NAME);//hits.id(i)返回文档编号
4)设定分隔
int maxNumFragmentsRequired = 3;
String fragmentSeparator = "...";
5)高亮处理
TokenStream tokenStream=TokenSources.getTokenStream(tpv);
//如果没有stop words去除还可以改成 TokenSources.getTokenStream(tpv,true); 进一步提速。
6)得到结果 String result =
highlighter.getBestFragments(
tokenStream,
text,
maxNumFragmentsRequired,
fragmentSeparator);
分享到:
相关推荐
《深入解析Lucene高亮显示源码:剖析`lucene-highlighter-2.2.0-src.zip`》 Lucene,作为一个开源全文检索库,以其高效、灵活的特点在信息检索领域广泛应用。在处理搜索结果时,为了提升用户体验,通常会采用高亮...
lucene-highlighter-3.5.0.jar lucene高亮包
在实际开发中,开发者可以使用Lucene Highlighter来增强搜索引擎的结果展示,例如,在新闻网站的搜索功能中,当用户输入关键词后,返回的新闻摘要将自动高亮显示关键词,使用户能够快速了解新闻内容。 总结,Lucene...
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
在Lucene 4.4.0中,Highlighter已经相当成熟,但仍然存在一些优化空间,比如提高高亮速度,支持更多复杂的查询类型,以及更好地处理多语言文本等。此外,开发者还可以通过自定义组件来扩展其功能,以适应特定的应用...
《Lucene+HighLighter高亮显示实例解析》 在信息技术领域,搜索引擎的构建与优化是至关重要的一环,其中,如何有效地对搜索结果进行高亮显示,以突出关键信息,是提升用户体验的关键因素之一。本篇文章将深入探讨...
用于编写Lucene高亮摘要的jar包,版本2.0.0,好用。谁用谁知道~~~~
而Highlighter组件,则是Lucene中用于搜索结果高亮显示的重要工具,它能够帮助用户快速定位到搜索关键词在文档中的位置,并以特殊方式(如加粗、变色)突出显示,从而提升用户体验。 一、Lucene 3.6.2核心组件 ...
lucene-highlighter-3.6.0-sources
而Lucene Highlighter作为其核心组件之一,是实现搜索结果高亮显示的关键工具。本文将深入探讨Lucene Highlighter 7.7.2版本的功能、原理以及如何在实际开发和测试中有效利用它。 一、Lucene Highlighter简介 ...
3. **Highlighter模块**:`lucene-highlighter-2.4.0.jar` 提供了高亮显示查询匹配部分的功能,这在用户界面中展示搜索结果时非常有用,可以突出显示与查询相关的关键词。 4. **示例和文档**:除了库文件外,这个...
在提供的"lucene5.2.1入门经典案例"中,你可以找到如何创建索引、执行查询、高亮显示结果等具体操作的示例代码。这些案例可以帮助初学者快速理解和应用Lucene-5.2.1的核心功能。通过实践,你可以更深入地了解Lucene...
在本教程中,我们将深入探讨Lucene中的高亮显示机制,这是搜索引擎返回结果时非常有用的一项功能,可以突出显示与查询匹配的关键字。在实际应用中,用户通常希望看到搜索词在文档中的确切位置,高亮显示使得这些匹配...
五、高亮显示:lucene-highlighter-4.7.0.jar 高亮显示是Lucene 4.7.0中的一个重要特性,它可以在搜索结果中突出显示匹配的关键词,帮助用户快速定位到关键信息。高亮器(Highlighter)组件可以根据查询结果生成高亮...
Lucene搜索的内容进行高亮显示。
Lucene 提供了Highlighter组件,可以在搜索结果中高亮显示匹配的关键词,提升用户体验。4.6.1版文档会指导如何配置和使用Highlighter,以优雅地展示搜索结果。 5. **多字段与多语言支持**: Lucene 支持在一个...
该一整套lucene开发jar包包含以下内容: lucene-core-3.0.1.jar(核心包) contrib\analyzers\common\...contrib\highlighter\lucene-highlighter-3.0.1.jar(高亮) contrib\memory\lucene-memory-3.0.1.jar(高亮)
5. **高亮显示**:为了高亮显示搜索结果,我们可以使用`Highlighter`类。它接受查询结果和文本,返回高亮后的片段。在Java中,`SimpleHTMLFormatter`和`TokenBasedFragmenter`常用于此目的。 6. **前端展示**:最后...
在实际开发中,可能还需要根据具体需求引入其他的Lucene模块,如`lucene-spatial.jar`用于地理空间搜索,`lucene-suggest.jar`用于自动补全和建议功能,`lucene-highlighter.jar`用于搜索结果的高亮显示等。...
5. **高亮显示**:`Highlighter`类实现搜索结果的关键词高亮。 四、实战应用 在实际项目中,开发者通常会结合Lucene与其他框架,如Spring、Solr或Elasticsearch,来构建更复杂的搜索引擎。例如,通过Spring集成...