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

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

阅读更多
建立索引:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;

public class TextFileIndexer
{
    public static void main(String[] args) throws Exception
    {
        /**//* 指明要索引文件夹的位置,这里是C盘的S文件夹下 */
        File fileDir = new File("c:\\s");

        /**//* 这里放索引文件的位置 */
        File indexDir = new File("index");
        Analyzer luceneAnalyzer = new StandardAnalyzer();
        
        
        IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer, true, MaxFieldLength.UNLIMITED);
        File[] textFiles = fileDir.listFiles();
        long startTime = new Date().getTime();

        // 增加document到索引去
        for (int i = 0; i < textFiles.length; i++)
        {
            if (textFiles[i].isFile() && textFiles[i].getName().endsWith(".txt"))
            {
                System.out.println(" File  " + textFiles[i].getCanonicalPath() + " 正在被索引 . ");
                String temp = FileReaderAll(textFiles[i].getCanonicalPath(), "GBK");
                System.out.println(temp);
                Document document = new Document();
                Field FieldPath = new Field("path", textFiles[i].getPath(), Field.Store.YES, Field.Index.NO);
                Field FieldBody = new Field("body", temp, Field.Store.YES, Field.Index.ANALYZED,
                        Field.TermVector.WITH_POSITIONS_OFFSETS);
                document.add(FieldPath);
                document.add(FieldBody);
                indexWriter.addDocument(document);
            }
        }
        // optimize()方法是对索引进行优化
        indexWriter.optimize();
        indexWriter.close();

        // 测试一下索引的时间
        long endTime = new Date().getTime();
        System.out.println(" 这花费了 " + (endTime - startTime) + "  毫秒来把文档增加到索引里面去! " + fileDir.getPath());
    }

    public static String FileReaderAll(String FileName, String charset) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(FileName), charset));
        String line = new String();
        String temp = new String();

        while ((line = reader.readLine()) != null)
        {
            temp += line;
        }
        reader.close();
        return temp;
    }
}

分享到:
评论

相关推荐

    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 多字段查询+文字高亮显示

    在IT领域,Lucene是一个非常重要的全文搜索引擎库,它由Apache软件基金会开发并维护。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这个强大的全文搜索...

    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-2.4.0jar包

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

    lucene-highlighter-2.4.0.jar

    lucene-highlighter-2.4.0.jar lucene highlighter

    lucene-core-2.4.0的源码

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

Global site tag (gtag.js) - Google Analytics