`
wb17534806
  • 浏览: 11586 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Lucene过程理解

阅读更多

Lucene学习文档

索引

何谓索引

1.从理论的角度理解:索引时一个单独的、物理的数据结构,它是某个表中一列或若干列值的集合、和相应的 指向表中物理标识这些值的 数据页的 逻辑指针清单。

2.从通俗的角度理解: 如果以上暂时不能理解,那你可以认为这也是一个单一的数据库,为了提高检索速度或其他原因,新建的一个简单的数据存储空间。

建立索引的优点

         1.大大加快数据的检索速度;

         2.创建唯一性索引,保证数据库表中每一行数据的唯一性;

         3.加速表和表之间的连接;

         4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和      排序的时间。

索引的缺点

         1.索引需要占物理空间。

         2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

 

Lucene简介

         Luceneapache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Eclipse的帮助系统的搜索功能,就是基于Lucene。它的原作者名为Doug Cutting

Lucene优劣

         1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。

  (2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。

  3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。

  4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

  5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。

Lucene缺点

            如同所有的索引一样,占用磁盘空间,对数据量少、数据变化快的数据源建立索引,需动态维护、降低了速度,加大了资源占用. 

 

 

全文搜索

数据库

索引

对文建立关键字索引

无法使用索引进行like查询

匹配效果

进行单词匹配,例如:“ant”不会匹配“planting

ant”会匹配“planting

匹配度

有匹配度算法,匹配度从高到低。

没有

可定制性

容易定制索引规则

无法定制

 

理解核心索引类

Indexer 类中可见,你需要以下类来执行这个简单的索引过程:

IndexWriter

Directory

Analyzer

Document

Field

1,  IndexWriter 建立索引的中心组件。这个类可以创建一个新的索引或者打开已有的索引。就是可以进行写入操作,但是不能进行读取操作或搜索。

2,  Directory 代表一个Lucene索引位置。它是一个抽象类,子类有:FSDirectory(磁盘索引位置),RAMDirectory(内存索引,在关闭时销毁)。

3,  Analyzer  IndexWriter构造函数中指定。对文本进行关键词提取,并取到其他内容。所以,不是文本的内容必须先转换成文本。有输入过滤的作用。

4,  Document  一个Document 代表字段的集合。Lucene只用来处理文本,Lucene的核心只能用来处理java.lang.Stringjava.io.Reader。在我们的Indexer 中,我们处理文本文件,所以对我们找出的每个文本文件,创建一个Document类的实例,用Field(字段)组装它,并把这个Document 添加到索引中,完成对这个文件的索引。

5,  Field  在索引中每个Document含有一个或多个Field类。每个字段相应于数据的一个片段,将在查询的时候重新获取。

 

理解核心搜索类

Lucene 提供的基本搜索接口和索引的一样直接。只需要几个类来执行基本的搜索操作:

IndexSearcher

Term

Query

TermQuery

Hits

1,  IndexSearcher  用来进行搜索,而IndexWriter是用来建立索引。 

 

索引文件夹/tmp/index,数据片段对应的字段“contents”,查找“lucene”字段。

2, Term  搜索的基本单元,和Field相对应。

3,  Query  是最基本的抽象父类。

4,  TermQuery  TermQuery Lucene支持的最基本的查询类型,并且它也是最原始的查询类型之一。

5,  Hits  Hits 类是一个搜索结果文档队列指针的容器。

 

其它类似的搜索产品

EgothorNamazu。。。

 

理解创建索引过程

 

1,  转化成文本。由于Field总是接收String类型或Reader类型,所以都要转化成文本。

2分析一旦你准备好了要索引的数据并创建了由 Field 组成的Lucene Document,你就可以调用IndexWriteraddDocument(Document)方法,把你的数据送入Lucene 索引。当你做这些时,Lucene 首先分析这些数据以使它更适合索引。它将文本数据分割成块或单词,并执行一些可选择的操作。例如,单词可以在索引之前转化为小写,以保证搜索是大小写无关的。典型的,它也有可能排除转入中所有经常出现但无意义的词,例如英语终止词(a, an, the, in, on 等等)。类似的,通常分析输入单词以获取它的本质。

这个非常重要的步骤称为分析。Lucene 的输入能够以很多有趣且有用的方法进行分析,目前,把这个步骤想像为一个过滤器。

3写索引。在分析完成后,就可以添加到索引中间去了。Lucene是将输入存储到反向索引的数据结构中去。

  • 大小: 17.7 KB
0
0
分享到:
评论

相关推荐

    Lucene时间区间搜索

    在上面的代码中,`DateTools.DateToString`方法将DateTime对象转换为Lucene可理解的字符串格式,然后创建了一个包含这两个时间点的闭合范围查询。这里的“true”参数表示边界是包含的。 接下来,我们需要将这个...

    lucene in action英文版 lucene 3.30包

    这本书主要面向Java开发者,通过阅读,读者可以理解Lucene的核心概念,学习如何使用它来构建自己的搜索引擎。 1. **Lucene基础** Lucene是基于Java的开源搜索库,它的核心功能包括索引和搜索文本。索引过程将文本...

    Lucene示例 BM25相似度计算

    本文将深入探讨Lucene示例中的BM25相似度计算,旨在帮助初学者理解如何利用Lucene 4.7.1版本构建索引、执行查询,并比较默认的TF-IDF相似度与BM25相似度的区别。 首先,我们需要了解什么是Lucene。Lucene是一个由...

    lucene3源码分析

    在理解Lucene的工作机制之前,我们需要了解全文检索的基本原理。 - **索引构建**:这是全文检索的第一步,涉及到将文档内容转换为可被快速搜索的形式。 - **查询处理**:当用户提交查询时,系统会根据已建立的索引...

    lucene 数据库

    首先,我们来看《lucene入门体会.doc》,这是作者在学习Lucene过程中的心得体会。通过这份文档,你可以了解到Lucene的基本概念,如索引的构建、查询解析以及结果排序等。作者分享了在实际操作中遇到的问题和解决方法...

    lucene讲义 叫你用lucene算法

    在深入理解Lucene的工作原理时,我们首先要关注的是其核心算法。 一、单个索引的构建 在Lucene中,索引构建的核心算法是快速排序算法。当新文档被添加到索引时,它们首先被分到不同的段(Segment),每个段都是一个...

    lucene in action源码

    源码的提供使得读者可以更直观地理解Lucene的工作原理,这对于学习和开发基于Lucene的搜索应用非常有帮助。以下是根据标题、描述以及压缩包中的文件名称,对Lucene相关知识点的详细解释: 1. **Apache Lucene**:...

    lucene整理文档,lucene详细描述,安装使用过程。

    **Lucene 概述** ...通过理解 Lucene 的核心概念,如 Analyzer、Document、Field 和查询机制,开发者可以有效地构建自己的文本检索系统。结合实际需求,可以进一步定制 Lucene 功能,以满足特定的应用场景。

    Lucene3.5源码jar包

    本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...

    Annotated Lucene 中文版 Lucene源码剖析

    《Annotated Lucene 中文版 Lucene源码剖析》是一本深入探讨Apache Lucene的书籍,专注于源码解析,帮助读者理解这个强大的全文搜索引擎库的工作原理。Lucene是一款开源的Java库,它提供了高效的文本搜索功能,被...

    lucene学习pdf2

    "lucene学习pdf2" 提供的文档,无疑是对Lucene深入理解的一把钥匙,它涵盖了Lucene的核心概念、操作流程以及高级特性。 首先,Lucene的基础知识是必不可少的。Lucene的核心在于索引和搜索,它将非结构化的文本数据...

    lucene可视化工具 Luck-6.5.0

    这对于优化搜索性能和理解搜索结果的生成过程非常有帮助。 3. **搜索界面**:用户可以直接在 Luck 中输入查询,查看搜索结果,同时可以看到 Lucene 如何解释查询语法,以及哪些文档匹配了查询条件。 4. **文档评分...

    Lucene全文检索引擎

    Lucene通过分词(Tokenization)、词干提取(Stemming)、去除停用词(Stopword Removal)等过程将原始文本转换为可搜索的结构。 4. **倒排索引(Inverted Index)**:这是Lucene最核心的数据结构,它将每个独特的...

    Lucene-Demo.rar Lucene分词的demo

    **正文** ...通过深入研究这个Demo,开发者不仅可以理解Lucene的基本用法,还能掌握如何在实际项目中整合和优化分词过程。对于那些对自然语言处理或信息检索感兴趣的开发者来说,这是一个极好的学习资源。

    lucene的应用程序扩展

    分词是 Lucene 搜索过程中的关键步骤,它将输入的查询和文档内容分解为单独的词语(或称为“术语”)。Lucene 提供了多种内置的分词器,如 StandardAnalyzer、SimpleAnalyzer 和 StopAnalyzer,同时也支持自定义分词...

    lucene搜索引擎项目

    《深入理解Lucene搜索引擎项目》 Lucene是一个高性能、全文本搜索库,它为开发者提供了在Java应用程序中实现全文检索的工具集。这个名为“lucene搜索引擎项目”的资源,旨在帮助用户更好地理解和应用Lucene来构建...

    lucene 小资源

    这个“lucene 小资源”可能包含了作者在学习和使用Lucene过程中积累的一些资料和经验,对于初学者或者想要深入理解Lucene的人来说,是非常宝贵的资源。 Lucene的核心功能包括文档索引、搜索以及相关的文本处理。它...

    lucene

    《深入理解Lucene:搜索引擎核心技术解析》 Lucene是一个全文搜索引擎库,由Apache软件基金会开发并维护,它提供了高效的文本检索、分析和存储功能。在Java编程语言中,Lucene被广泛应用于各种需要全文搜索功能的...

    lucene源码和程序

    在`lucene-1.4-final`这个压缩包中,包含了Lucene 1.4版本的源代码,你可以深入研究其内部实现,理解各个类和方法的工作原理。同时,这也可以帮助你定制分析器、优化搜索性能,或者扩展Lucene的功能,例如集成到你的...

Global site tag (gtag.js) - Google Analytics