04.全文检索的原理-创建索引
你要想查这个东西,得先把库建好。先创建索引再查询索引,这两部分。建立索引,先把文档内容里面的词找出来然后建立索引。我们这里就是一个分析的过程,分析怎么分析?词与词之间有空格,根据空格来把它分词就可以了。在关系型数据库中查询的时候大小写字母是没有关系的。没有关系是你用数据库的事,你可以设置它有关系。大小写字母本身是不同的字符串嘛。在Java里面,大小写字母是不同字符串,都转换成大写或者都转换成小写都可以啊。但是你要统一一个大小写,统一完了之后这样你查询的时候大写开头的单词(例如Lucene)和小写开头的单词(例如lucene)就是同一个单词。去除标点符号,标点符号也不是什么关键词,毫无意义的东西,建索引的时候标点符号又不用的。去除常用词,is或者a这些,没有什么实际意义,一般不会用它们来建立索引。
3、分析文档
先对原始文档进行分词,然后转换成小写,然后去除标点符号,去除常用词(停用词),得到语汇单元。
停用词:要把它剔除出去就叫做停用词
4、创建索引
一个文档就是我们的一个文档对象,一个文件你可以看做是一个文档对象,每一个文档对象包含多个域,你可以设文件名、文件内容、文件大小、文件路径,把这些域都存到文档中。我们有文件名域,文件内容域,做分词基本上是对这两个域进行分词,我们要对文件的名称还有文件的内容进行分词。分析的过程就按照我们上面所说的进行分析。分析完了之后得到了一堆单词,这堆单词拿到之后我们就可以把它建成一个索引了。就相当于是一个字段的这么一个表,一个字段的表,这个表里面只有这么一个字段,一个表里面就一个字段,这个字段就是关键词。然后在这些关键词上我们再建索引。建索引是我们分词之后得到的语汇单元,对语汇单元集合做一个索引。查找的时候先查找索引,在索引中查找。比如我们查找web这个词。正常我们都是通过文档去找词,现在这个结构是通过词来找文档,所以这个叫做倒排索引结构。
创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构。
倒排索引结构也叫反向索引结构,包括索引和文档两部分,索引即词汇表,它的规模较小,而文档集合较大。
我们根据这个词汇表建索引,文档就是Document,可以把文件内容都存到Docuement,它是非常大的。
获得文档,先把文档怎么能取到,创建文档对象,你先把它定义好,好像我们定义表结构一样,定义好我们这个文档对象存放哪些域,分析文档,对我们这些域进行分析,就是我们把它分词,过滤,最后得到一些语汇单元,得到语汇单元之后就创建索引,创建索引之后就拿到索引库。