`
rockethj8
  • 浏览: 24988 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Lucene 2.4.0 建立索引+搜索结果高亮显示(二)

阅读更多
使用2.4版本查询并高亮显示
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.TermPositionVector;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocCollector;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import org.apache.lucene.search.highlight.TokenSources;

public class NewSearch
{
    public static void main(String[] args) throws Exception
    {
        String indexDir = "index";
        String queryString = "oracle";
        IndexSearcher isearcher = new IndexSearcher(indexDir);
        
    
        
        BooleanClause.Occur[] clauses = {BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD};
        TopDocCollector collector = new TopDocCollector(10); // 启用这个
        Query query = MultiFieldQueryParser.parse(queryString, new String[]{"path", "body"}, clauses,
                new StandardAnalyzer());
        isearcher.search(query, collector); // 作为参数
        ScoreDoc[] hits = collector.topDocs().scoreDocs; // 拿到结果
        int docId;
        SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<strong><font color='red'>", "</font></strong>");
        SimpleFragmenter fragmenter = new SimpleFragmenter(60);
        Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query));
        highlighter.setTextFragmenter(fragmenter);
        int maxNumFragmentsRequired = 10;
        String fragmentSeparator = "";
        TermPositionVector tpv = null;
        TokenStream tokenstream = null;
        for (int i = 0; i < hits.length; i++)
        {
            // 循环
            docId = hits[i].doc; // 一个内部编号
            Document doc = isearcher.doc(docId); // 通过编号,拿到文档
            System.out.println("所在文件路径:"+doc.get("path"));
            tpv = (TermPositionVector) isearcher.getIndexReader().getTermFreqVector(docId, "body");     
            tokenstream = TokenSources.getTokenStream(tpv);
            String result = highlighter.getBestFragments(tokenstream, doc.get("body"),maxNumFragmentsRequired, fragmentSeparator);
            System.out.println("内容"+result);
        }
    }
}



Lucene 2.4里一些过期方法的解决方案
http://extjs2.iteye.com/blog/268014
分享到:
评论

相关推荐

    Lucene2.4.0(jar包+高亮包)

    - **搜索结果高亮**: 为了提高用户阅读体验,Lucene 高亮包提供了搜索关键词在文档中的高亮显示功能,使用户能快速识别出匹配的关键词。 - **自定义样式**: 开发者可以自定义高亮的样式,如使用不同的颜色或者背景...

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

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

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

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

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

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

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

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

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

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

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

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

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

    Lucene提供了高效的文本分析、索引和搜索功能,是许多大型网站和应用的基础。本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene...

    lucene-2.4.0-src.zip

    在Lucene 2.4.0中,这个过程通过`IndexWriter`类实现,它负责建立和更新索引,同时支持分段索引,提高了性能和可扩展性。 接着,索引的存储和检索是由`Directory`接口和它的实现类完成的。例如,`FSDirectory`用于...

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

    **SpringBoot+Lucene搜索结果高亮显示** 在现代Web应用程序中,强大的全文搜索引擎功能是不可或缺的,而Apache Lucene正是这样一个高效的、可扩展的开源全文检索库。在这个SpringBoot+Lucene的Demo中,我们将深入...

    lucene-2.4.0 jar包

    - **改进的性能**:在 2.4.0 版本中,Lucene 对搜索速度和内存使用进行了优化,提供了更快的索引和搜索体验。 - **增强的稳定性**:修复了前一版本中的许多错误,提高了整体的系统稳定性和可靠性。 - **扩展性**:...

    基于lucene2.4.0的开发jar包

    3. **lucene-highlighter-2.4.0.jar**:高亮模块是Lucene中用于突出显示搜索结果中与查询匹配的部分。在搜索结果展示时,高亮可以显著提升用户体验,让用户快速定位到关键词。在2.4.0版本中,高亮器支持多种格式的...

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

    综上所述,这个项目展示了如何利用SSH框架与Lucene搜索引擎技术,实现一个功能完备的新闻搜索系统,包括高效搜索、结果排序、分页展示以及关键词高亮等特性。这样的系统对于提升新闻网站的用户体验具有重要意义。

    Lucene+HighLighter高亮显示实例

    本篇文章将深入探讨如何利用Apache Lucene这个强大的全文搜索引擎库,结合Highlighter组件实现搜索结果的高亮显示。 Apache Lucene是一个高性能、可扩展的开源全文检索库,它提供了完整的索引和搜索功能,使得...

    lucene2.4.0

    4. 排序与评分(Scoring):Lucene使用TF-IDF算法对搜索结果进行评分,高分表示文档与查询的相关性更高。 三、Lucene 2.4.0特性 1. 基于Java的API:Lucene 2.4.0完全使用Java编写,跨平台兼容,易于集成到Java项目...

    java(结合lucene)版的公交搜索系统(javaWeb+lucene+jsp+tomcat+eclipse/idea)

    java(结合lucene)版的公交搜索系统(javaWeb+lucene+jsp+tomcat+eclipse/idea) java(结合lucene)版的公交搜索系统(javaWeb+lucene+jsp+tomcat+eclipse/idea) java(结合lucene)版的公交搜索系统(javaWeb+lucene+...

    lucene-2.4.0.rar

    - **查询执行**:索引建立后,通过QueryParser构建查询,使用Searcher执行查询并获取结果集。 - **结果排序**:Lucene提供了多种排序策略,如按相关性(TF-IDF)或自定义评分函数排序。 - **缓存机制**:为了提高...

    lucene-highlighter-2.4.0.jar

    lucene-highlighter-2.4.0.jar lucene highlighter

    最全的lucene-2.4.0jar包

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

    lucene-core-2.4.0的源码

    总之,通过深入学习Lucene 2.4.0的源码,我们可以了解到搜索引擎背后的基本原理,理解其索引构建、查询执行、结果排序等核心过程,为开发高效、定制化的搜索应用打下坚实基础。对于研究搜索引擎技术的开发者而言,这...

Global site tag (gtag.js) - Google Analytics