Lucene01---几个概念理解
在http://xdwangiflytek.iteye.com/blog/1386439里我简单的介绍了一下SEO,下面来学习一下Lucene技术,这部分先来理解几个概念。
信息检索概念:
信息检索就是从信息集合中找出与用户需求相关的信息。被检索的信息除了文本外,还有图像、音频、视频等多媒体信息,这里我们主要来说说文本信息的检索。
信息检索的分类:
全文检索:把用户的查询请求和全文中的每一词进行比较,不考虑查询请求与文本语义上的匹配,在信息检索工具中,全文检索是最具通用性和实用性的。(通俗的讲就是匹配关键字的)
数据检索:查询要求和信息系统中的数据都遵循一定的格式,具有一定的结构,允许对特定的字段检索,其性能与使用有很大的局限性,并且支持语义匹配。
知识检索:强调的是基于知识的、语义的匹配(最复杂的,它就相当于我们知道了搜索问题的答案,再直接去搜答案的信息)。
说明:
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询的时候,检索程序就根据事先建立好的索引进行查找,并将查找的结果反馈给用户的检索方式。
数据检索查询要求和信息系统中的数据都遵循一定的格式,具有一定的结构,允许对特定的字段检索。例如,数据均按“时间、人物、地点、事件”的形式存储,查询可以为:地点=“北京”。数据检索的性能取决于所使用的标识字段的方法和用户对这种方法的理解,因此具有很大的局限性。
信息检索的基本流程:
步骤:
1、在文本框中输入关键字
2、搜索引擎(信息检索信息)从互联网(信息集合)中找出包含这些关键词的若干网页(相关信息),并按照一定的准则(相关度)排序,然后将部分结果返回(分页)。
全文检索中索引的建立与进行索引的流程:
为了提供检索的功能,信息检索系统会事先做一些准备工作:信息的采集与加工。
信息采集:把信息源的信息拷贝到本地,构成待检索的信息集合;
信息加工:为采集到本地的信息编排索引,为查询做好准备;
说明:
在Internet上采集信息的软件被称为爬虫或蜘蛛或网络机器人(搜索引擎外围的东西),爬虫在Internet*问每一个网页,每访问一个网页就把其中的内容传回本地服务器。
信息加工的最主要的任务就是为采集到本地的信息编排索引,为查询做好准备。
分词器的作用:
分词器,对文本资源进行切分,将文本按规则切分成一个个进行索引的最小单位(关键词)
上面的这段文本经过分词后如下:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
我 |
在 |
Iteye |
上 |
的 |
博客 |
地址 |
是 |
Xdwangiflytek |
建立索引和进行搜索时都要用到分词器,为了保证正确的搜索到结果,在建立索引与进行搜索时使用的分词器应为同一个,就好比加密解密使用的密钥也是同一个的道理是一样的。
英文分词(分词器的工作流程):
英文分词大致过程如下:
说明:
形态还原,即去除单词的形态,比如worked---》work、studies---》study
如对“IndexWriter addDocument’s a javadoc.txt”进行分词:
关键词切分:“IndexWriter”、“addDocument’s”、“a”、“javadoc.txt”
去除停留词:“IndexWriter”、“addDocument’s”、“javadoc.txt”
形态还原:“IndexWriter”、“addDocument”、“javadoc.txt”
转为小写:“IndexWriter”、“addDocument”、“javadoc.txt”
中文分词:
中文的分词比较复杂,因为不是一个字就是一个词,而且一个词在另外一个地方可能不是一个词,如在“帽子和服装”中,“和服”就不是一个词,对于中文分词,通常有三种方式:单字分词、二分法分词、词典分词
单字分词:就是按照中文一个字一个字的分词,如“我叫王旭东“---我、叫、王、旭、东(StandardAnalyzer)
二分法分词:按两个字进行切分,如“我叫王旭东”---我叫、叫王、王旭、旭东(CJKAnalyzer)
词典分词:按某种算法构造词,然后去匹配已建好的词库集合,如果匹配到就切分出来成为词语,通常词库分词被认为是最理想的中文分词算法,如“我叫王旭东”---我叫、王旭东。
停用词:
有些词在文本中出现的频率非常高,而且对文本所表达的意思没有影响,如英文的“a、an、the、of”或中文的“的、了、着”,以及标点符号,这样的词被称为“停用词”。文本经过分词后,停用词通常被过滤掉,不会被进行索引。在检索的时候,用户的查询中如果含停用词,检索系统也会将其过滤掉(因为用户输入的查询字符串也要进行分词处理)。排除停用词可以加快索引的速度,还可以减少索引文件的大小。
倒排序索引结构:
通俗的说不是这个文档当中有几个词,而是现在说有几个词分别在哪些文档中包含(反过来了)
索引文件的检索与维护:
词汇表规模相对较小,文档集合规模较大,进行检索时,先从检索词汇表开始,然后找到相对应的文档。如果查询中仅包含一个关键词,则词汇表中找到该单词,并取出他对应的文档就可以了,如果查询中包含多个关键词,则需要将各个单词检索出的记录进行合并。
维护倒排索引有三个操作:插入、删除和更新文档,但是更新操作需要较高代价,因为文档修改后(即使是很小的修改),都可能会造成文档中的很多的关键词的位置发生变化,这就需要频繁的读取和修改记录,这种代价是很大的,因此一般都不进行更新操作,而是使用先删除后创建的方式代替更新操作。
下次会正式进行Lucene主题里。
上一篇: 爬虫大集锦,喜欢爬虫的朋友有福啦