`
susiya
  • 浏览: 91076 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Lucene学习总结

    博客分类:
  • Java
 
阅读更多
一、Lucene 原理

Lucene是一个高效的,基于Java的全文检索库

在生活中会遇到各种各样的数据, 而数据可以概括为两种, 结构化数据非结构化数据
1、结构化数据指具有固定格式或有限长度的数据,如数据库,元数据等。
2、非机构化数据指指不定长或无固定格式的数据,如邮件,word文档等。

当我们需要全文检索某个信息,主要有两种方法:
a. 顺序扫描法(Serial Scanning):一个一个文件的全文搜索,这种当然是很慢的了。
b. 通过索引查找法:通过对非结构数据进行重新组织,建立索引,再对索引进行查找。而Lucene 就是用的这个原理进行全文检索。

Lucene的全文检索大体分两个过程,索引创建(Indexing)和搜索索引(Search)。
 a.索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。
 b.搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。

下面这幅图来自《Lucene in action》,描述了Lucene 的检索过程和全文检索的一般过程。



参考自:http://www.cnblogs.com/forfuture1978/archive/2010/06/13/1757479.html

二、Lucene例子
下面是建立索引和查找文件的简单例子
a.建立索引
    private static void indexFiles() throws IOException {
        Analyzer analyzer = new StandardAnalyzer();
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        config.setOpenMode(OpenMode.CREATE_OR_APPEND);
        
        Directory dir = FSDirectory.open(Paths.get("C:\\shuxiang\\tmp\\lucene6"));
        IndexWriter writer = new IndexWriter(dir, config);
        Document doc = new Document();
        Path path = Paths.get("C:\\shuxiang\\tmp\\Edit5");
        InputStream newInputStream = Files.newInputStream(path);
        InputStreamReader inputStreamReader = new InputStreamReader(newInputStream, StandardCharsets.UTF_8);
        Field pathField = new StringField("path", path.toString(), Field.Store.YES);
        doc.add(pathField);
        TextField field = new TextField("contents", new BufferedReader(inputStreamReader));
        doc.add(field);
        writer.addDocument(doc);
        writer.close();
        
    }


b. 查找文件
    private static void searchFile() throws IOException, ParseException {
        Directory dir = FSDirectory.open(Paths.get("C:\\shuxiang\\tmp\\lucene6"));
        IndexReader reader = DirectoryReader.open(dir);
        IndexSearcher searcher = new IndexSearcher(reader);
        
        Analyzer analyzer = new StandardAnalyzer();
        QueryParser parser = new QueryParser("contents", analyzer);
        Query query = parser.parse("92646KHJ4");
        System.out.println("Searching for: " + query.toString("contents"));
        
        TopDocs topDocs = searcher.search(query, 100000);
        System.out.println(topDocs.totalHits + " total matching documents");
        for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
            Document hitDoc = searcher.doc(scoreDoc.doc);
            System.out.println("hit:" + hitDoc.get("path"));
        }
    }


Lucene官网有两个很好的例子,如下:
https://lucene.apache.org/core/6_2_1/demo/src-html/org/apache/lucene/demo/IndexFiles.html

https://lucene.apache.org/core/6_2_1/demo/src-html/org/apache/lucene/demo/SearchFiles.html
分享到:
评论

相关推荐

    lucene学习总结

    **Lucene学习总结** 在深入理解Lucene之前,我们首先需要了解什么是全文检索。全文检索是一种从大量文本数据中快速查找所需信息的技术。它通过建立索引来实现高效的搜索,而Lucene正是Java环境下最著名的全文搜索...

    24 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(1).doc

    24 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(1)

    lucene学习总结文档

    lucene是一个全文搜索框架,它提供接口,由用户自由实现。 本资源为对lucene的学习+收集

    Lucene 3.0 原理与代码分析PDF

    Lucene学习总结之一:全文检索的基本原理 Lucene学习总结之二:Lucene的总体架构 Lucene学习总结之三:Lucene的索引文件格式(1) Lucene学习总结之三:Lucene的索引文件格式(2) Lucene学习总结之三:Lucene的...

    lucene学习总结_博客记录1

    Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了基本的索引和搜索功能,可以被嵌入到各种应用程序中,实现高效的全文检索。本篇文章将深入探讨 Lucene 的核心原理,从全文检索的基础概念...

    Lucene学习总结之一:全文检索的基本原理[归纳].pdf

    在全文检索中,Lucene是一个关键的工具,它是一个高效的、基于Java的全文检索库。全文检索主要用于处理非结构化数据,如邮件、文档等,这些数据无法像结构化数据(如数据库记录)那样通过简单的SQL查询进行快速检索...

    Lucene3.0原理与代码分析完整版.docx

    在Lucene学习总结之二中,我们看到,Lucene的核心组件包括Analyzer(分析器)、Document(文档对象)、Field(字段)、IndexWriter(索引写入器)和Searcher(搜索器),它们协同工作以实现高效的信息检索。...

    lucene 资料全集

    所提供的文档资源,如《Lucene学习总结之一》、《传智播客Lucene3.0课程》、《JAVA_Lucene_in_Action教程完整版》以及《Lucene_in_Action(中文版)》,都是深入了解 Lucene 的宝贵资料,建议结合这些材料进行系统...

    Lucene学习源码.rar

    本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...

    搜索引擎lucene学习资料

    在"lucene总结.chm"文件中,可能包含了网友们对Lucene的详细学习笔记和实践心得。CHM是Microsoft编写的帮助文件格式,通常包含HTML页面和相关资源,便于用户查阅和学习。在这里,读者可以找到关于Lucene的API用法、...

    Lucene 3.2学习总结.ppt

    前段时间学习lucene的总结,因为版本已经更新到了3.2,一些API有更新,很多现有的网页上找到的教程都跑不了。

    lucene学习全方面剖析总结

    ### Lucene 学习全方面剖析总结 #### Lucene 原理与应用概述 Lucene 是一个高性能、全文检索的开源库,被广泛应用于各种搜索引擎的开发之中。本篇文章旨在全面剖析 Lucene 的核心技术和应用场景,帮助读者深入理解...

    Lucene学习工具包.zip

    **Lucene学习工具包** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"Lucene学习工具包.zip"包含了学习Lucene所需的重要资料和资源,旨在帮助开发者深入理解和掌握Lucene的核心概念、功能...

    lucene基础总结

    ### Lucene基础知识总结 #### 一、Lucene简介与核心概念 **Lucene**是一款高性能、全文搜索引擎库,由Java...以上内容总结了在学习和使用Lucene过程中的关键知识点,希望能帮助读者更好地理解和应用Lucene的技术。

    Lucene5学习之增量索引(Zoie)

    总结起来,Lucene5学习之增量索引(Zoie)涉及到的关键技术点包括: 1. 基于Lucene的增量索引解决方案:Zoie系统。 2. 主从复制架构:Index Provider和Index User的角色。 3. 数据变更追踪:通过变更日志实现增量索引...

    lucene学习笔记

    标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...

    Lucene5学习之SpellCheck拼写纠错

    **标题:“Lucene5学习之SpellCheck拼写纠错”** 在深入探讨Lucene5的SpellCheck功能之前,首先需要理解Lucene是什么。Lucene是一个开源的全文检索库,由Apache软件基金会开发,它提供了高性能、可扩展的文本搜索...

Global site tag (gtag.js) - Google Analytics