全文信息检索介绍及算法分析

一、摘要

本文主要介绍了全文信息检索的概念、应用领域、算法分类、技术难点和算法比较。及一款实现全文检索的数据结构和算法。

二、什么是全文数据库和全文信息检索

保存在数据库中的记录数据,从类型上可以分为两种。其一是结构化数据,象字符、日期、数值、货币等,这些数据都是具有有限长度或固定格式的数据;其二是非结构化数据,也叫全文数据,象简历、简介、论文等,这些数据都是以不定长、非固定格式保存的字符型数据。

现有的数据库系统,都是以结构化数据为检索的主要目标,因为实现相对简单。比如数值检索,可以建立一张排序好的索引表,以二分法实现查找,速度很快。但对于非结构化数据,即全文数据,要想实现检索,相对难度要大的很多了。

当然,你也许会说:“这个多简单呀,把全文数据读到内存,然后进行比较查找不就可以了?”。不错,的确是一个很朴素想法。不过最严重的问题是,如果数据库中有1万条,10万条,100万条记录的话,可以想象一下检索所消耗的时间了吧?!如果一个全文数据库系统,对一条检索命令的响应时间超过了半分钟,那么没有用户是能够容忍的了。

因此,全文检索的主要目的,就是实现对大容量的非结构化数据的快速查找。

三、应用领域

现在,随着计算机使用的越来越普及,数据的积累越来越多,全文检索的要求也就越来越迫切了。目前,主要的应用领域是:图书馆数据库、情报数据库、专利数据库、医药数据库、办公自动化、历史资料库、电子出版系统、等等。

四、算法和算法比较

目前,实现全文信息检索的算法有两大基本方案,词索引和字索引。

词索引,以单词为索引单位的检索算法。这个技术是全文检索技术的鼻祖(60年代,就已经有产品问世)。道理很简单,计算机是适合于英语语言环境的,而英语又是以单词为语言要素。说的更通俗一些,就是每个英文单词之间都有一个空格。因此,在对全文数据库建立索引的时候,按照单词划分建立索引,是即简单又自然的。我们国家最开始引入全文检索技术的时候,是汉化英文的数据库系统,因此也就自然使用了词索引技术。但由于中英文环境中语素的不同特点,使得中文必须要解决分词的问题。比如对一句话“我是中国人”,那么必须要切分出“我 是 中国 人”这样的单词形式。如果是人的大脑来进行分词判断,那真是太简单了,只要有小学二年级的中文水平,就足够了。但是,如果想让计算机能够进行分词,却非常困难。计算机分词的大致算法是:由文章切分出段落,由段落切分出句子,由句子切分出短语,然后查找词库,根据动词、连词、形容词再进行切分得到所有的单词。在某些情况下,计算机是根本无法正确进行分词的。下面是计算机自动分词所闹的笑话:

(1)我们要积极地主动作好计划生育工作

计算机愚蠢的分词结果:我们 要 积极 地主 动作 好 计划 生育 工作

评论:我胡汉三又回来啦

后果:检索“地主”的时候,产生误查结果

(2)吉林省长春市的人民

计算机愚蠢的分词结果:吉林 省长 春市 的 人民

评论:我知道了,吉林有个省长叫“春市”

后果:检索“吉林省”的时候,产生漏查结果

因此,词索引的技术难点是分词算法。Oracle 和 Notes 等汉化的数据库系统,虽然也都提供了部分全文检索功能,但都出现了这样或那样的问题。分词算法的提升空间还是有的,需要加入人工智能分析、上下文判断等技术。但还有一个致命的弱点,那就是对地名,人名的判断。

字索引,以汉语单字为索引单位的检索算法。这个也是我推荐的算法,较词索引更适合于中文环境。这也就是为什么英文汉化版的全文检索软件没有占领中国市场的主要原因。(目前,本土民族化的软件,比如手写板,汉字扫描识别,中文全文信息检索......还是比国外的同类产品领先很多的。)但字索引也不是没有缺点,最主要的问题是:

(1)、检索“华人”,会误查出“中华人民共和国”

(2)、检索中药“大黄”,会误查出“大黄缄”,“大黄麻”等完全不同概念的药品。而这些单词在英文中是不会出现错误的,因为根本就是不同的拼写。

字索引的多查错误,也是可以更正的。比如检索“大黄”的同时,也检索“大黄缄”,然后排除“大黄缄”的检索命中点,但这需要付出检索时间的代价。下表,是字、词索引方案各项性能的比较:

索引方式 索引比 索引速度 检索速度 误查 漏查
词索引 0.8 ~ 2.0
字索引 0.3 ~ 2.0 稍快 稍慢
时间: 2024-11-01 00:27:09

全文信息检索介绍及算法分析的相关文章

PgSQL · 特性介绍 · 全文搜索介绍

背景 在日常的数据处理中,我们经常会有这样的需求:从一个文本中寻找某个字符串(比如某个单词). 对这个需求,我们可以用类似这样的SQL完成:SELECT * FROM tbl WHERE text LIKE '%rds PostgreSQL%';(找到含有"rds PostgreSQL"的文本). 现在我们考虑一些特殊的情形: 需要查找的文本特别多,特别大: 不做单纯的字符串匹配,而是考虑自然语言的一些特性,比如匹配某一类字符串(域名.人名)或者匹配单词的所有形式(不考虑它的词性及变化

Solr简单介绍

简介   Solr是一个高性能,采用Java5开发,Solr基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎. 工作方式   文档通过Http利用XML 加到一个搜索集合中.Solr 查询该集合也是通过http收到一个XML/JSON响应来实现.它的主要特性包括:高效.灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,

solr教程,值得刚接触搜索开发人员一看(转载:http://blog.csdn.net/awj3584/article/details/16963525)

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 版本 作者/修改人 日期 V1.0 gzk 2013-06-04 1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr 提供了层面

自己动手搭建搜索工具

1 Apache Solr搜索服务器简介 1.1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式).它易于安装和配置,而且附带了一个基于HTTP 的管理界面.可以使用Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要.Solr的特性包括: 高级的全文搜索功能 专为高通量的网络流量进行的优

Asp.Net2.0中实现多任务异步页的一点提示

asp.net|异步     如果想学习Asp.Net2.0的异步页技术,那么一定要仔细阅读http://www.microsoft.com/china/MSDN/library/default.mspx?mfr=true,并且下载它的源代码仔细揣摩.全文共介绍了3种实现异步页的编程模型,且功能一种比一种强大.多余的我就不多说了,直接看最后一种模型:使用PageAsyncTask类.RegisterAsyncTask方法.ExecuteRegisteredAsyncTasks方法和Timeout

Asp.Net 2.0中实现多任务异步页的一点提示

如果想学习Asp.Net2.0的异步页技术,那么一定要仔细阅读http://www.microsoft.com/china/MSDN/library/default.mspx?mfr=true,并且下载它的源代码仔细揣摩.全文共介绍了3种实现异步页的编程模型,且功能一种比一种强大.多余的我就不多说了,直接看最后一种模型:使用PageAsyncTask类.RegisterAsyncTask方法.ExecuteRegisteredAsyncTasks方法和TimeoutAsyncOperation方

Lucene5.3.1 使用的简单实例(待9月更新)

Lucene是一个基于Java的开源全文信息检索工具包. MyTest.Java public class MyTest { /// 存放需要分析的文件的地址 private static String FILE_PATH = "/Users/zoujs/Desktop/test4lucene"; // 存放索引的位置 private static String INDEX_PATH = "/Users/zoujs/Desktop/index4lucene"; @T

聊一聊双十一背后的技术 - 分词和搜索

双十一背后的技术系列文章 <聊一聊双十一背后的技术 - 物流, 动态路径规划> <聊一聊双十一背后的技术 - 分词和搜索> <聊一聊双十一背后的技术 - 强奸式秒杀技术实现> <聊一聊双十一背后的技术 - 毫秒分词算啥, 试试正则和相似度> 云栖聚能聊 - 聊一聊双十一背后的数据库技术 标签 PostgreSQL , 分词 , 全文索引 , rum , 搜索引擎 , 双十一 , tsvector , tsquery 背景 2016双十一刚过,大伙还在忙着收快

Kevin Kelly解读人工智能狂热:破解超人类人工智能的五个假设

人工智能正变得越来越热,有时候让人难以分清新闻报道中那些关于超级人工智能的预言到底是可能发生的还是只是单纯的杞人忧天.近日,Wired 杂志创始主编 Kevin Kelly 在 Backchannel 上发表了一篇题为<The AI Cargo Cult: The Myth of A  Superhuman AI>的文章,引起了广泛的关注,该文章谈到我们梦想的超人类人工智能可能只是一个神话,其假设的基础还没有任何支持证据.机器之心对该文进行了全文编译介绍. 我听说未来的计算机人工智能会变得比我