`
conkeyn
  • 浏览: 1524447 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Lucene使用项向量提高高亮显示性能

阅读更多

http://callan.iteye.com/blog/155611

 

Lucene增加高亮显示后结果更高明显了,但是返回结果的速度比较慢.原因是Lucene做每一篇文档的相关关键词的高亮显示时,在运行时执行了很多遍的分词操作,降低了性能.

TermVector保存Token.getPositionIncrement() Token.startOffset() 以及Token.endOffset() 信息。利用Lucene中新增加的Token信息的保存结果以后,就不需要为了高亮显示而在运行时解析每篇文档。通过Field方法控制是否保存该信息

public void searcher() throws IOException{   
           
        IndexReader reader = IndexReader.open(directory);   
           
        IndexSearcher searcher = new IndexSearcher(directory);   
           
        TermQuery query = new TermQuery(new Term("subject","java"));   
           
        Hits hits = searcher.search(query);   
           
        //高亮显示设置   
        SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color='red'>","</font>");      
           
        Highlighter highlighter =new Highlighter(simpleHTMLFormatter,new QueryScorer(query));   
  
         // 这个100是指定关键字字符串的context的长度,你可以自己设定,因为不可能返回整篇正文内容   
        highlighter.setTextFragmenter(new SimpleFragmenter(100));   
  
        for(int i = 0; i < hits.length(); i++){   
               
            Document doc = hits.doc(i);   
               
            TermPositionVector termFreqVector = (TermPositionVector)reader.getTermFreqVector(hits.id(i), "subject");   
               
            TokenStream tokenStream = TokenSources.getTokenStream(termFreqVector);   
               
            String result = highlighter.getBestFragment(tokenStream, doc.get("subject"));   
  
            System.out.println(doc.get("title"));   
               
            System.out.println(result);   
               
        }   
    }  

 

搜索结果:

java
<font color='red'>java</font>一门编程语言

 

分享到:
评论

相关推荐

    Lucene.Net.dll

    7. **性能优化**:Lucene采用了内存映射文件和位向量等技术,实现了高效的磁盘I/O和内存使用,确保了搜索速度。 在.NET环境中使用Lucene.Net.dll,开发者需要了解以下几点: - **安装与引用**:将Lucene.Net.dll...

    lucene-2.9.4

    Lucene最初由Doug Cutting创建,它是一个高性能、全文本搜索的Java库,为开发者提供了构建搜索引擎所需的各种组件,如索引、查询解析、排序和高亮显示等。Lucene 2.9.4是其历史上的一个重要版本,具有稳定性和兼容...

    Lucene实战 第二版 完整清晰中文版

    此外,书中还探讨了Lucene的Perl、Python、C#、.Net和C++的移植版本,并介绍了排序、过滤、项向量特性以及对多索引和远程索引的搜索操作。针对新引入的SpanQuery特性、扩展的查询解析器以及命中结果集等功能也进行了...

    lucene-core-2.9.4.jar.zip

    Lucene的核心功能包括文档的索引、搜索、排序和高亮显示等。在这个2.9.4版本中,开发者可以利用其强大的文本分析能力,对输入的文本进行分词、去除停用词、词形还原等一系列预处理操作,为后续的搜索提供高效的数据...

    Lucene3.5的学习研究报告

    对于高亮显示结果时丢失标点的问题,可以通过选择合适的分析器,如IK分词器,来解决。最后,搜索结果的显示数量可以通过TopScoreDocCollector来控制,定义要返回的文档数,并通过score方法收集相关文档。 总之,...

    luke lucene索引查看

    6. **Term Vector查看**:Luke可以显示文档的词项向量(Term Vectors),这包含每个词项的位置、频率和偏移量信息,对于理解TF-IDF算法和其他相关性计算很有价值。 7. **倒排索引查看**:Luke允许用户查看倒排索引...

    WebLucene2.zip

    8. **内存优化**:Lucene通过缓存技术提高了搜索速度,比如字段值缓存和位向量缓存,减少磁盘I/O操作。 Web环境下的Lucene应用可能涉及以下方面: 1. **Web应用程序集成**:将Lucene与Java Servlets、Spring、...

    Lucene 3.0 原理与代码分析完整版

    它支持包括索引创建、维护、搜索以及高亮显示等功能,并且具有良好的扩展性和性能。 Lucene的总体架构设计允许它在多个方面进行优化和定制,以适应不同的应用场景。例如,它能够支持索引的分布式管理、不同语言的...

    搜索引擎Lucene+Heritrix(第二版)4

    1. **Lucene基础**:Lucene是一个基于Java的文本搜索库,提供了完整的全文检索功能,包括索引、搜索、高亮显示结果等。它通过分词、建立倒排索引等步骤,实现高效的数据检索。 2. **索引过程**:在Lucene中,首先...

    一个专业搜索公司关于lucene+solar资料(1)

    ### Lucene+Solor知识点概述 #### 一、搜索引擎基础理论 **1.1 Google神话** - **起源与发展:** - Google成立于1998年,由Larry Page...- 本章详细介绍了如何使用Lucene创建和管理索引库,包括索引库的设计、创建...

    elasticsearch_18实用知识库分享

    20. Elasticsearch 高亮之词项向量 Elasticsearch 提供了高亮功能,可以对搜索结果进行高亮显示。 21. Elasticsearch 高亮之 Highlight 原理 Elasticsearch 提供了高亮原理,可以对搜索结果进行高亮显示。 22. ...

    关键字所用的jar包

    5. **优化与性能**: 为了提高搜索效率,开发者还需要关注缓存策略、多线程处理、内存管理等方面。例如,Lucene提供了一些优化选项,如字段缓存、位向量缓存等,可以帮助加快搜索速度。 6. **扩展性与可配置性**: ...

    Solr-Plugins:Solr 的各种插件

    Solr,作为Apache Lucene项目的一部分,是一款强大的开源搜索引擎服务器,它提供了丰富的功能,包括全文检索、高亮显示、拼写检查、分类、 faceting、实时添加文档等。Solr的灵活性和可扩展性得益于其插件系统,使得...

Global site tag (gtag.js) - Google Analytics