文件名称:总论总论总论总论-操作系统
文件大小:4.69MB
文件格式:PDF
更新时间:2024-06-29 22:01:34
lucene 源码分析
一一一一、、、、总论总论总论总论 根据 http://lucene.apache.org/java/docs/index.html定义: Lucene 是一个高效的是一个高效的是一个高效的是一个高效的,,,,基于基于基于基于 Java 的全文检索库的全文检索库的全文检索库的全文检索库。。。。 所以在了解 Lucene 之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的数据总体分为两种:结构化数据结构化数据结构化数据结构化数据和非结构化数据非结构化数据非结构化数据非结构化数据。 � 结构化数据结构化数据结构化数据结构化数据::::指具有固定格式或有限长度的数据,如数据库,元数据等。 � 非结构化数据非结构化数据非结构化数据非结构化数据::::指不定长或无固定格式的数据,如邮件,word 文档等。 当然有的地方还会提到第三种,半结构化数据,如 XML,HTML 等,当根据需要可按结构化 数据来处理,也可抽取出纯文本按非结构化数据来处理。 非结构化数据又一种叫法叫全文数据。 按照数据的分类,搜索也分为两种: � 对结构化数据的搜索对结构化数据的搜索对结构化数据的搜索对结构化数据的搜索:如对数据库的搜索,用 SQL 语句。再如对元数据的搜索,如利用 windows 搜索对文件名,类型,修改时间进行搜索等。 � 对非结构化数据的搜索对非结构化数据的搜索对非结构化数据的搜索对非结构化数据的搜索:如利用 windows 的搜索也可以搜索文件内容,Linux 下的 grep 命令,再如用 Google 和百度可以搜索大量内容数据。 对非结构化数据也即对全文数据的搜索主要有两种方法: 一种是顺序扫描法顺序扫描法顺序扫描法顺序扫描法(Serial Scanning)::::所谓顺序扫描,比如要找内容包含某一个字符串的文 件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串, 则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。如利用 windows 的搜索也可以搜索文件内容,只是相当的慢。如果你有一个 80G 硬盘,如果想在上面找到 一个内容包含某字符串的文件,不花他几个小时,怕是做不到。Linux 下的 grep 命令也是这 一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方法还是最直接, 最方便的。但是对于大量的文件,这种方法就很慢了。 有人可能会说,对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构