`
yuxingfirst
  • 浏览: 51690 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
社区版块
存档分类
最新评论

Lucene01----全文索引

 
阅读更多

 

一:全文检索

   在文本检索里,全文索引是一种搜索单个计算机存储的文档(computer-stored document )或从一个全文数据库(full text database )里搜索集合的技术。全文索引与基于元数据的搜索以及数据库表示的原始文本的一部分(例如 标题 摘要 已选定部分或者是参考文献)(参考http://en.wikipedia.org/wiki/Full_text_search )

   我们生活中的数据总体分为两种:结构化数据和非结构化数据。

结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。

非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。

   当然有的地方还会提到第三种,半结构化数据,如XMLHTML 等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。非结构化数据又一种叫法叫全文数据。

   按照数据的分类,搜索也分为两种:

     对结构化数据的搜索:如对数据库的搜索,用SQL语句。再如对元数据的搜索,如利用windows 搜索对文件名,类型,修改时间进行搜索等。

    对非结构化数据的搜索:如利用windows 的搜索也可以搜索文件内容,Linux 下的grep命令,再如用Google 和百度可以搜索大量内容数据。

    对非结构化数据也即对全文数据的搜索主要有两种方法:一种是顺序扫描法(Serial Scanning):所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一 个80G 硬盘,如果想在上面找到一个内容包含某字符串的文件,不花他几个小时,怕是做不到。Linux 下的grep 命令也是这一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方法还是最直接,最方便的。但是对于大量的文件,这种方法就很慢了。有人可能会说,对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),那么把我们的非结构化数据想办法弄得有一定结构不就行了吗?这种想法很天然,却构成了全文检索的基本思路,也即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。

这种说法比较抽象,举几个例子就很容易明白,比如字典,字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)

 

 

 

 

 

 

对上述索引搜索的总结:

 

 

 

  1. 索引过程:

          1) 有一系列被索引文件

2) 被索引文件经过语法分析和语言处理形成一系列词(Term)

3) 经过索引创建形成词典和反向索引表。

4) 通过索引存储将索引写入硬盘。

2. 搜索过程:

a) 用户输入查询语句。

b) 对查询语句经过语法分析和语言分析得到一系列词(Term)

c) 通过语法分析得到一个查询树。

d) 通过索引存储将索引读入到内存。

e) 利用查询树搜索索引,从而得到每个词(Term)的文档链表,对文档链表进行交,差,并得

到结果文档。

f) 将搜索到的结果文档对查询的相关性进行排序。

g) 返回查询结果给用户。 

 

1
1
分享到:
评论

相关推荐

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    Apache Lucene,作为开源的全文检索库,是Java开发人员进行高效信息检索的重要工具。这个压缩包文件包含了Lucene从2.9.4版本到3.4.0版本的核心组件,让我们一起探讨这些版本中的关键变化和核心知识点。 1. **Lucene...

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    Lucene是一个高性能、全文本搜索库,它为开发者提供了索引和搜索文本的工具。在2.4.1这个版本中,Lucene已经包含了对中文分词的支持,可以与各种分词器如jieba、IK、HanLP等配合使用,实现更精准的中文搜索。Je-...

    lucene-4.7.0全套jar包

    Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-4.7.0”压缩包包含了Lucene 4.7.0...

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    在信息技术领域,搜索引擎的构建是至关重要的一环,而Lucene作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。这里我们主要聚焦于Lucene 3.0.2版本,通过分析其核心组件和示例演示,来深入探讨这个版本的...

    lucene-core-2.9.2.jar

    2. 索引过程:Lucene的索引过程包括分析(Analyzer)、术语文档表(Term Document Matrix)生成和倒排索引(Inverted Index)的构建。分析阶段将输入文本拆分成有意义的单元——术语,然后创建术语文档表,最后构建...

    lucene-core-2.4.0.jar

    作为Java实现的全文检索引擎,Lucene提供了一套高度可扩展的API,支持索引和搜索大量文本数据。在“lucene-core-2.4.0.jar”这个版本中,Lucene已经相当成熟,可以满足各种复杂的搜索需求。 二、核心组件 1. 文档...

    Apache-Lucene.Net-3.0.3-RC2

    Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。开发人员可以基于Lucene.net实现全文检索的...

    lucene je-analysis jar包

    Lucene是Apache软件基金会的一个项目,它是一个高性能、全文本搜索库,提供了一个简单的API,开发者可以利用这个API在自己的应用程序中实现全文索引和搜索功能。Lucene包含了索引、搜索、分词、排序、高亮、相关性等...

    Lucene---全文检索(文档pdf/txt/office/html)

    **Lucene 全文检索引擎** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发,被广泛应用于各种项目中,用于实现高效、可扩展的全文搜索功能。它提供了强大的文本分析和索引能力,支持多种格式的文档,如 ...

    lucene-codecs-4.4.0.zip

    在IT领域,Lucene是一个非常重要的开源全文搜索引擎库,它为开发者提供了强大的文本分析、索引和搜索功能。这里我们关注的是Lucene的4.4.0版本,通过解压"lucene-codecs-4.4.0.zip",我们可以深入了解其内部机制和...

    Lucene-core-2.0.0.jar

    总的来说,"Lucene-core-2.0.0.jar"是开发全文检索应用的基础,它集成了索引、查询、分词等关键功能,并在2.0.0版本中进行了优化,使得开发更加高效,搜索更加精准。无论你是搜索引擎的初学者还是经验丰富的开发者,...

    最新全文检索 lucene-5.2.1 入门经典实例

    《最新全文检索 Lucene-5.2.1 入门经典实例》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种信息检索系统。在5.2.1版本中,Lucene提供了更为高效和强大的搜索功能,为开发者提供了构建...

    lucene源码---官网最新下载

    例如,内容字段可能需要被全文索引,而标题字段可能只存储不索引。 - **Term**: 是由字段名和字段值组成的唯一标识,是倒排索引的基本单位。 3. **查询与搜索** - **Query**: Lucene 支持多种查询类型,如 ...

    Lucene-core-2.0.0

    Lucene是一个高性能、全文本搜索库,它允许开发者添加搜索功能到他们的应用程序中。这个核心库包含了实现搜索功能所必需的各种工具和算法。 描述中提到的《开发自己的搜索引擎》第二版,是一本可能教导如何利用...

    lucene2.9.1-src.tar.gz源码及完整Demo

    Lucene提供了一个简单确强大的应用程式接口,能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费java资讯检索程式库。人们经常...

    MMAnalyzer 分词必导入jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    Lucene是一个高性能、全功能的全文搜索引擎库,它提供了一套完整的搜索解决方案,包括索引、查询解析、排序等。`lucene-core-2.4.1.jar`是Lucene的核心库,包含了Lucene的基础组件和API,如文档处理、索引操作、查询...

    je-analysis-1.5.3;lucene-core-2.9.2

    Lucene允许开发者在应用程序中实现复杂的全文搜索功能,它提供了一个高级的索引和搜索机制,支持倒排索引、模糊查询、布尔查询等。版本号2.9.2意味着这比早期版本有了更多的改进和优化,尽管可能较新版本有更多的...

    lucene-全文索引

    基于JAVA的全文索引引擎Lucene简介(中) - 网站开发初中级代码参考-

    lucene-core-3.6.2.zip

    Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品,lucene-core:其中包括了常用的文档,索引,搜索,...

    lucene-core-2.3.0 lucene-core2.4.0以及极易分词器 jar包

    Lucene 是一个开源的全文检索库,由Apache软件基金会维护,它为开发人员提供了高级文本搜索功能。在Java环境中,Lucene是构建搜索引擎的核心工具,它提供了高效的索引和查询机制,支持多种复杂的搜索语法。这里提到...

Global site tag (gtag.js) - Google Analytics