`

Lucene学习笔记之三:全文搜索详解

 
阅读更多

全文搜索详解主要是对其的组成部分和流程做一个详细的说明,有助于我们接下来学习lucene。

 

Lucene学习笔记之一:信息检索与全文检索这篇文章中,我们已经说过,全文搜索是按索引来找,效率高(从字典的索引找,再找到哪一页,效率会高),也就是要建立索引,然后进行搜索的过程。

Lucene学习笔记之二:lucene是什么这篇文章中介绍了lucene是什么,也就是为了更好的进行建立索引和搜索。

 

在全文搜索工具中,都是由这样的三部分组成:索引部分、分词部分、搜索部分。为什么是由这三部分组成呢?我们来想一想,为了要提交检索的效率,得建立索引;从哪来的索引,必须对资源(文档,文章)进行分词;搜索更不用说了

 

全文检索中建立索引与进行检索的流程

建立索引,就是对待搜索的信息进行一定的分析,并将分析结果按照一定的组织方式存储起来,通常将这些结果存储在文件中。存储分析结果的文件的集合就是索引。在查询时,先从索引中查找,由于索引是按照一定的结构组织的,所以查询的速度非常快。

为提供检索的功能,信息检索系统会事先做一些准备工作:信息的采集与加工。

  1. 信息采集:把信息源的信息拷贝到本地,构成待检索的信息集合。(信息源可以是互联网中的网页、硬盘中的txt、doc、pdf等格式的电子文档,或是文件系统上的文件等等)。

  2. 信息加工:为采集到本地的信息编排索引,为查询做好准备。

流程如下:


分词器

分词器,对文本资源进行切分,将文本按规则切分为一个个可以进行索引的最小单位(关键词)。

建立索引和进行搜索时都要用到分词器。为了保证能正确的搜索到结果,在建立索引与进行搜索时使用的分词器应是同一个。


索引文件结构

索引库是一组文件的集合。


索引文件的检索:

索引表规模相对较小,文档集合规模较大。进行检索时,先从检索索引表开始,然后找到相对应的文档。如果查询中仅包含一个关键词,则在索引表中找到该单词,并取出他对应的文档就可以了。如果查询中包含多个关键词,则需要将各个关键字检索出的记录进行合并。

 

索引文件的维护:

维护索引用三个操作:插入、删除和更新文档。但是更新操作需要较高的代价,因为文档修改后(即使是很小的修改),就可以会造成文档中的很多的关键词的位置发生了变化,这是需要频繁的读取和修改记录,这种代价是相当高的。因此,一般不进行更新操作,而是使用“先删除,后创建”的方式代替更新操作。


今天说写到这里,下节见。

 

本文链接:Lucene学习笔记之三:全文搜索详解,本文由huangyineng原创,转载请注明出处

分享到:
评论

相关推荐

    lucene学习笔记

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

    lucene3.5学习笔记

    ### Lucene 3.5 学习笔记 #### 一、Lucene 3.5 基本概念 ##### 1.1 Lucene 概述 **1.1.1 IndexWriter** `IndexWriter` 是 Lucene 中的核心类之一,用于创建或更新索引。它提供了添加文档、删除文档、优化索引等...

    本人的Lucene2.9学习笔记

    Lucene,作为一款开源的全文搜索引擎库,被广泛应用于各种信息检索场景。本文将详细讲解Lucene 2.9.1版本的核心概念、架构以及索引创建与搜索的流程。 一、Lucene 2.9.1环境搭建 在开始使用Lucene之前,首要任务是...

    Lucene笔记

    Lucene是一个高性能、全功能的文本搜索库,它被广泛应用于各种规模的应用程序之中。作为一款开源工具,Lucene提供了强大的搜索功能,使得开发者能够轻松地为自己的应用添加搜索功能。 #### 官方网站 - **网址**:...

    Maven学习-个人学习笔记

    **Maven学习笔记** Maven是一个强大的项目管理工具,它主要应用于Java开发环境中,用于构建、管理和部署项目。Maven通过使用一个标准的目录结构和一个XML格式的项目对象模型(Project Object Model,POM)文件,...

    Elastic Search学习笔记

    ### Elastic Search 学习笔记详解 #### 一、Elasticsearch 概述 Elasticsearch 是一个基于 Lucene 的搜索引擎,它提供了丰富的功能用于搜索、分析和存储数据。本篇学习笔记将围绕 Elasticsearch 的基本查询操作...

    Hadoop数据分析平台学习笔记

    ### Hadoop数据分析平台学习笔记 #### 一、Hadoop概述 **Hadoop**是一个开源软件框架,用于分布式存储和处理大型数据集。它的设计灵感来源于Google的论文,其中包括Google文件系统(GFS)和MapReduce计算模型。...

    Hadoop阶段初识学习笔记

    ### Hadoop基础知识详解 #### 一、Hadoop概述 Hadoop是一个开源的、可靠的、可扩展的系统架构,主要用于利用分布式架构存储海量数据并实现分布式的计算任务。它由Apache基金会维护,旨在解决大规模数据处理的问题...

    Notes-of-Lucene

    Apache Lucene是一个强大的开源全文搜索引擎库,主要用Java语言编写,广泛应用于各种搜索应用和信息检索系统中。在阿里巴巴集团,Lucene也被用于构建高效、精准的内部搜索服务。这个"Notes-of-Lucene"压缩包可能包含...

    Elasticsearch核心技术与实战 笔记

    ### Elasticsearch核心技术与实战笔记知识点概览 #### 一、ELK Stack概述 - **定义**:ELK Stack是由Elasticsearch、Logstash和Kibana组成的开源软件集合,旨在提供全面的数据抽取、搜索分析和数据可视化解决方案。...

    Elasticsearch笔记

    它建立在Lucene之上,但提供了一个更为简单和统一的接口,使开发者可以轻松地集成搜索功能到他们的应用中。 #### 2. Lucene概述 **Lucene** 是一个高性能、全功能的全文搜索引擎库。它为开发者提供了创建搜索应用...

    Nutch 0.8笔记NUTCHNUTCH

    Nutch 是一个开源的、基于 Lucene 的网络搜索引擎项目,它提供了一套完整的搜索引擎解决方案,包括网页抓取、索引和搜索功能。Nutch 0.8 版本尤其值得关注,因为它完全使用 Hadoop 进行了重写,从而充分利用了 ...

    java文集

    ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...

Global site tag (gtag.js) - Google Analytics