`
deepfuture
  • 浏览: 4400885 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80078
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70069
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103371
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285841
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15015
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67586
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32157
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45996
社区版块
存档分类
最新评论

lucene-使用Highlighter高亮显示查询项

阅读更多

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-highlighter-2.2.0-src.zip

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

    lucene-highlighter-3.5.0.jar lucene高亮包

    lucene-highlighter-3.5.0.jar lucene高亮包

    lucene-highlighter-3.4.0.jar

    在实际开发中,开发者可以使用Lucene Highlighter来增强搜索引擎的结果展示,例如,在新闻网站的搜索功能中,当用户输入关键词后,返回的新闻摘要将自动高亮显示关键词,使用户能够快速了解新闻内容。 总结,Lucene...

    lucene3.0-highlighter.jar

    lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的

    lucene-highlighter-4.4.0.jar

    在Lucene 4.4.0中,Highlighter已经相当成熟,但仍然存在一些优化空间,比如提高高亮速度,支持更多复杂的查询类型,以及更好地处理多语言文本等。此外,开发者还可以通过自定义组件来扩展其功能,以适应特定的应用...

    Lucene+HighLighter高亮显示实例

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

    Lucene-highlighter-2.0.0 jar包

    用于编写Lucene高亮摘要的jar包,版本2.0.0,好用。谁用谁知道~~~~

    lucene3.6.2及highlighter jar包

    而Highlighter组件,则是Lucene中用于搜索结果高亮显示的重要工具,它能够帮助用户快速定位到搜索关键词在文档中的位置,并以特殊方式(如加粗、变色)突出显示,从而提升用户体验。 一、Lucene 3.6.2核心组件 ...

    lucene-highlighter-3.6.0-sources

    lucene-highlighter-3.6.0-sources

    lucene-highlighter-7.7.2.zip_lucene

    而Lucene Highlighter作为其核心组件之一,是实现搜索结果高亮显示的关键工具。本文将深入探讨Lucene Highlighter 7.7.2版本的功能、原理以及如何在实际开发和测试中有效利用它。 一、Lucene Highlighter简介 ...

    最全的lucene-2.4.0jar包

    3. **Highlighter模块**:`lucene-highlighter-2.4.0.jar` 提供了高亮显示查询匹配部分的功能,这在用户界面中展示搜索结果时非常有用,可以突出显示与查询相关的关键词。 4. **示例和文档**:除了库文件外,这个...

    最新全文检索 lucene-5.2.1 入门经典实例

    在提供的"lucene5.2.1入门经典案例"中,你可以找到如何创建索引、执行查询、高亮显示结果等具体操作的示例代码。这些案例可以帮助初学者快速理解和应用Lucene-5.2.1的核心功能。通过实践,你可以更深入地了解Lucene...

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

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

    lucene-4.7.0.

    五、高亮显示:lucene-highlighter-4.7.0.jar 高亮显示是Lucene 4.7.0中的一个重要特性,它可以在搜索结果中突出显示匹配的关键词,帮助用户快速定位到关键信息。高亮器(Highlighter)组件可以根据查询结果生成高亮...

    lucene-highlighter-3.0.0.

    Lucene搜索的内容进行高亮显示。

    lucene-4.6.1官方文档

    Lucene 提供了Highlighter组件,可以在搜索结果中高亮显示匹配的关键词,提升用户体验。4.6.1版文档会指导如何配置和使用Highlighter,以优雅地展示搜索结果。 5. **多字段与多语言支持**: Lucene 支持在一个...

    lucene 3.0.1 jar包

    该一整套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(高亮)

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

    5. **高亮显示**:为了高亮显示搜索结果,我们可以使用`Highlighter`类。它接受查询结果和文本,返回高亮后的片段。在Java中,`SimpleHTMLFormatter`和`TokenBasedFragmenter`常用于此目的。 6. **前端展示**:最后...

    lucene-dependency

    在实际开发中,可能还需要根据具体需求引入其他的Lucene模块,如`lucene-spatial.jar`用于地理空间搜索,`lucene-suggest.jar`用于自动补全和建议功能,`lucene-highlighter.jar`用于搜索结果的高亮显示等。...

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

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

Global site tag (gtag.js) - Google Analytics