`
wwty
  • 浏览: 543164 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

全文检索理论补习之索引部分

阅读更多

首先,数据分两种:结构化数据非结构化数据

 

结构化数据如数据库数据非结构化数据如邮件,word文档

非结构化数据的另一种叫法是全文数据

当然还有一种分类为半结构化数据:如html和xml数据;半结构化数据可以根据需要按照结构化数据来处理,也可以按照非结构化数据来处理

 

结构化数据本来就是按照一定的规则来组织的数据,不用多说;关键的问题就在于非结构化数据即全文数据的搜索上。

 

全文数据的搜索主要有两种: 1.顺序扫描法 2.全文检索法

1.顺序扫描法在NT系统里面就有体现,windows当中的搜索功能就有搜索文件,或者搜索文件内容的选项;如果是按照搜索文件当中的内容时,那么windows就会顺序扫描计算机当中的每一个文件,去查找包含指定内容的文件。不用多说,会非常慢。

2.全文检索接触过数据库之后,针对数据库当中的结构化数据的搜索速度是很快的,而将非结构化的数据转换成结构化的数据,然后再进行搜索,这就是全文检索的基本思路了。

这也就是说,全文检索分为两步,首先将非结构化的数据整理成结构化的----建立索引的过程

然后对结构化的数据搜索的过程------对索引进行搜索的过程

总结:这种先建立索引,然后再对索引进行搜索的过程叫做全文检索

1.索引创建:

首先,索引里面究竟存些什么?

想这个问题的时候,想一下顺序搜索:非结构化数据中所存储的是每个文件都包含哪些字符串,即已知文件欲求字符串相对容易,也即是文件到字符串的映射。而NT系统下的搜索是已知字符串,去搜索文件,即字符串到文件的映射。这就相对困难了。因为基础是文件到字符串的映射,而搜索的时候倒过来从字符串去映射文件。所以,如何在文件到字符串映射的基础上,保存文件到字符串的映射关系,那么搜索的时候就相对简单了。

总结:由于文件到字符串的映射是字符串到文件的映射的反向过程,因此这种索引被称作反向索引

大致存储结构如下:字符串----文档列表

此处的字符串称为字典,文档列表称为倒排表

 

term
term是搜索的最小单位,它表示文档的一个词语,term由两部分组成:它表示的词语和这个词语所出现的field。

 

tocken
tocken是term的一次出现,它包含trem文本和相应的起止偏移,以及一个类型字符串。一句话中可以出现多次相同的词语,它们都用同一个term表示,但是用不同的tocken,每个tocken标记该词语出现的地方。

 

其次,如何创建索引?

1.首先是拿到文档 2.将文档传给分词组件(Tokenizer) 分词组件会做如下事情:

2.1将文档分成一个一个单独的单词

2.2去除标点符号

2.3去除停词

3.将得到的单词或者说是词元传给语言处理组件,对于英语,语言处理组件一般做以下几点:

3.1变为小写

3.2将单词缩减为词根形式,如cars到car等。这种操作称为:stemming。

3.3将单词转变为词根形式,如drove到drive等。这种操作称为:lemmatization

两者的异同:

相同之处:两者都要使词汇成为词根形式。

不同之处: stemming采用的是缩减的方式:cars到car,driving到drive

lemmatization采用的是转变的方式:drove到drive,driving到drive。

算法不同: stemming主要是采取某种固定的算法来做这种缩减,如去除s,去除ing加e,将ational变为ate,将tional变为tion

lemmatization主要是采用保存某种字典的方式做这种转变。比如字典中有driving道drive,drove到drive,am、is、are到be的映射,做转变时,只要查字典就可以了。

总结: stemming和lemmatization不是互斥关系,是有交集的,有的词利用这两种方式都能达到相同的转换。

4.将得到的词传给索引组件indexer

4.1利用得到的词(Term)创建一个字典。

4.2对字典按字母顺序进行排序

4.3合并相同的词(Term)成为文档倒排(Posting List)链表形成文档倒排链表的过程中,有两个定义:(注意这两个定义)

 

文档频次(df)(Document Frequency),表示总共有多少文件包含此词

词频率(tf)Frequency,表示此文件中包含了多少个此词

 

总结:从理论上来讲,拿到原始数据,然后传给分词组件,先将文档经过分词组件的分析,然后经过语言处理组件,最后就到了分词组件,最关键的应该是分词组件部分。这一部分可以单独研究一下

 

最后,如何对索引进行搜索?

1.用户输入查询语句

2.对查询语句进行词法分析,语法分析,语言处理。

词法分析主要用来识别单词和关键字;比如用户输入“lucene and lerned not hadoop”,

经过词法分析得到的单词有:lucene,learned,hadoop,关键字有and,not。

分享到:
评论

相关推荐

    lucene全文检索简单索引和搜索实例

    《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...

    全文检索理论知识

    学习全文检索总结的理论知识总结分享;学习全文检索总结的理论知识总结分享

    oracle 全文检索 全文索引 多列字段索引

    oracle 全文检索 oracle全文索引 多列字段检索,匹配多列字段搜索功能。

    Lucene.Net 实现全文检索

    总的来说,Lucene.Net 在 .Net MVC4 上实现全文检索是一个涉及数据库交互、索引构建、查询处理和结果展示的综合过程。通过熟练掌握 Lucene.Net 的使用,可以为用户提供高效、准确的全文搜索体验。

    密文全文检索系统中的索引机制研究

    密文全文检索系统中的索引机制研究的文献文献

    WebSolrDemo 全文检索,全文索引

    WebSolrDemo是一个示例项目,它展示了如何在Web应用中实现全文检索和全文索引功能,使用的核心技术是Apache Solr。Apache Solr是一款开源的企业级搜索平台,能够处理大量数据并提供高效的全文检索能力。 全文检索是...

    全文自动检索系统中的快速检索与索引文件压缩算法

    ### 全文自动检索系统中的快速检索与索引文件压缩算法 #### 摘要与背景 随着信息技术的迅速发展,人类面临的信息处理量日益增大,尤其在处理海量数据(通常指数百兆字节以上)时,传统的信息处理速度已无法满足...

    NC65全文检索配置说明

    文档UAP65如何配置全文检索功能进行了详细的描述,包括如何配置sysconfig,如何配置索引等相关内容

    oracle全文检索

    Oracle全文检索技术是数据库管理系统Oracle中用于高效查找和分析文本数据的一种功能。它在不同的Oracle版本中有着不同的名称,如Oracle8.0.x中的ConText,Oracle8i中的interMedia Text,以及从Oracle9i开始的Oracle ...

    Oracle全文检索及自动更新索引的实现.pdf

    在实际应用中,根据业务需求,可能还需要考虑索引的维护策略,如定期清理无用的索引,监控索引的性能和空间占用,以及优化全文检索的查询语句以提高查询效率。 总之,Oracle的全文检索功能为处理大量文本数据的查询...

    针对大数据创建检索索引和全文检索应用

    系统的介绍了JAVA应用全文检索,包括定时根据数据库数据创建索引、记录日志、检索查询

    oracle 全文检索实现

    Oracle 全文检索实现的总体架构图由五个部分组成:XML 配置文件、读取器、索引器、索引库和检索器。其中,XML 配置文件存储数据库的配置信息,包括需要全文检索的表名和列名。读取器读取 XML 配置文件中的信息,并...

    Java的全文检索实现

    全文检索系统是一种根据全文检索理论构建的软件系统,旨在提供高效的全文检索服务。该系统主要包括索引引擎、查询引擎、文本分析引擎、对外接口及各种外围应用系统。其中,Lucene是全文检索系统的核心组成部分。 ##...

    android+lucene实现全文检索并高亮关键字索引库

    总的来说,将Lucene应用于Android的全文检索是一个复杂的过程,涉及到索引创建、查询执行、结果高亮等多个步骤。通过合理设计和优化,我们可以为用户打造一个高效、友好的搜索体验。在实际开发中,参考《android+...

    如何使用SQL全文检索

    而全文索引则针对文本字段,它创建了一个包含所有可能词项的索引,允许用户进行模糊匹配、部分词汇搜索甚至短语搜索。全文索引通过词法分析器(英语中的“英语词干提取器”)处理文本,识别出单词的根形式,这样可以...

    oracle全文检索的实现

    Oracle数据库,作为业界领先的关系型数据库管理系统之一,自Oracle9i Release 2起便引入了强大的全文检索功能——Oracle Text。这一功能不仅提升了文本数据的检索效率,还拓展了文本管理的能力,使其成为企业级...

    Lucene全文检索引擎

    3. **索引(Index)**:索引是Lucene的核心,它是对文档集合的结构化表示,使得能快速进行全文检索。Lucene通过分词(Tokenization)、词干提取(Stemming)、去除停用词(Stopword Removal)等过程将原始文本转换...

Global site tag (gtag.js) - Google Analytics